{"ModuleCode":"CS2020","ModuleTitle":"Data Structures and Algorithms Accelerated","Department":"Computer Science","ModuleDescription":"This module is an accelerated version that combines CS1020 and CS2010. It continues the introduction in CS1010, and emphasises object-oriented programming with application to data structures. Topics covered include object-oriented problem modeling with concepts of objects, classes and methods, object-oriented problem formulation and problem solving, data structure design principles and implementation strageties, abstraction and encapsulation of data structures, object-oriented programming constructs, use of APIs and class libraries, exception handling, lists, linked lists, stacks, queues, hash tables, trees, graphs, and their algorithmic design, various forms of sorting and searching methods, recursive algorithms, and algorithm analysis.","ModuleCredit":"6","Workload":"4-2-2-4-3","Prerequisite":"Obtain a grade of at least A- in either CS1010 or CS1101S or CS1010S or CS1010FC or their equivalents","Preclusion":"CG1102, CG1103, CS1020, CS1020E, CS2010, CS1102, CS1102C, CS1102S","Corequisite":"Obtain a grade of at least A- in either CS1010 or CS1101S Programming Methodology","ExamDuration":"P2H","ExamVenue":"MPSH5","Types":["Module"],"CorsBiddingStats":[{"AcadYear":"2014/2015","Semester":"2","Round":"1A","Group":"Lecture 1","Quota":"8","Bidders":"0","LowestBid":"0","LowestSuccessfulBid":"0","HighestBid":"0","Faculty":"School Of Computing","StudentAcctType":"Returning Students [P]"},{"AcadYear":"2014/2015","Semester":"2","Round":"1A","Group":"Lecture 1","Quota":"22","Bidders":"10","LowestBid":"1","LowestSuccessfulBid":"1","HighestBid":"1068","Faculty":"School Of Computing","StudentAcctType":"New Students [P]"},{"AcadYear":"2014/2015","Semester":"2","Round":"1B","Group":"Lecture 1","Quota":"8","Bidders":"0","LowestBid":"0","LowestSuccessfulBid":"0","HighestBid":"0","Faculty":"School Of Computing","StudentAcctType":"Returning Students [P]"},{"AcadYear":"2014/2015","Semester":"2","Round":"1B","Group":"Lecture 1","Quota":"12","Bidders":"0","LowestBid":"0","LowestSuccessfulBid":"0","HighestBid":"0","Faculty":"School Of Computing","StudentAcctType":"New Students [P]"},{"AcadYear":"2014/2015","Semester":"2","Round":"2A","Group":"Lecture 1","Quota":"20","Bidders":"0","LowestBid":"0","LowestSuccessfulBid":"0","HighestBid":"0","Faculty":"School Of Computing","StudentAcctType":"Returning Students and New Students [P]"},{"AcadYear":"2014/2015","Semester":"2","Round":"2B","Group":"Lecture 1","Quota":"20","Bidders":"0","LowestBid":"0","LowestSuccessfulBid":"0","HighestBid":"0","Faculty":"School Of Computing","StudentAcctType":"Returning Students and New Students [P]"},{"AcadYear":"2014/2015","Semester":"2","Round":"3A","Group":"Lecture 1","Quota":"20","Bidders":"1","LowestBid":"1","LowestSuccessfulBid":"1","HighestBid":"1","Faculty":"School Of Computing","StudentAcctType":"NUS Students [P]"},{"AcadYear":"2014/2015","Semester":"2","Round":"3B","Group":"Lecture 1","Quota":"19","Bidders":"0","LowestBid":"0","LowestSuccessfulBid":"0","HighestBid":"0","Faculty":"School Of Computing","StudentAcctType":"NUS Students [P]"},{"AcadYear":"2012/2013","Semester":"2","Round":"1A","Group":"Lecture 1","Quota":"2","Bidders":"1","LowestBid":"500","LowestSuccessfulBid":"1","HighestBid":"500","Faculty":"School Of Computing","StudentAcctType":"Returning Students [P]"},{"AcadYear":"2012/2013","Semester":"2","Round":"1A","Group":"Lecture 1","Quota":"6","Bidders":"8","LowestBid":"401","LowestSuccessfulBid":"500","HighestBid":"700","Faculty":"School Of Computing","StudentAcctType":"New Students [P]"},{"AcadYear":"2012/2013","Semester":"2","Round":"1B","Group":"Lecture 1","Quota":"1","Bidders":"0","LowestBid":"0","LowestSuccessfulBid":"0","HighestBid":"0","Faculty":"School Of Computing","StudentAcctType":"Returning Students [P]"},{"AcadYear":"2012/2013","Semester":"2","Round":"2A","Group":"Lecture 1","Quota":"1","Bidders":"1","LowestBid":"1","LowestSuccessfulBid":"1","HighestBid":"1","Faculty":"School Of Computing","StudentAcctType":"Returning Students and New Students [P]"},{"AcadYear":"2011/2012","Semester":"2","Round":"1A","Group":"Lecture 1","Quota":"5","Bidders":"0","LowestBid":"0","LowestSuccessfulBid":"0","HighestBid":"0","Faculty":"School Of Computing","StudentAcctType":"Returning Students [P]"},{"AcadYear":"2011/2012","Semester":"2","Round":"1A","Group":"Lecture 1","Quota":"20","Bidders":"11","LowestBid":"1","LowestSuccessfulBid":"1","HighestBid":"1359","Faculty":"School Of Computing","StudentAcctType":"New Students [P]"},{"AcadYear":"2011/2012","Semester":"2","Round":"1B","Group":"Lecture 1","Quota":"5","Bidders":"0","LowestBid":"0","LowestSuccessfulBid":"0","HighestBid":"0","Faculty":"School Of Computing","StudentAcctType":"Returning Students [P]"},{"AcadYear":"2011/2012","Semester":"2","Round":"1B","Group":"Lecture 1","Quota":"9","Bidders":"1","LowestBid":"1","LowestSuccessfulBid":"1","HighestBid":"1","Faculty":"School Of Computing","StudentAcctType":"New Students [P]"},{"AcadYear":"2011/2012","Semester":"2","Round":"2A","Group":"Lecture 1","Quota":"13","Bidders":"0","LowestBid":"0","LowestSuccessfulBid":"0","HighestBid":"0","Faculty":"School Of Computing","StudentAcctType":"Returning Students and New Students [P]"},{"AcadYear":"2011/2012","Semester":"2","Round":"2B","Group":"Lecture 1","Quota":"13","Bidders":"0","LowestBid":"0","LowestSuccessfulBid":"0","HighestBid":"0","Faculty":"School Of Computing","StudentAcctType":"Returning Students and New Students [P]"},{"AcadYear":"2011/2012","Semester":"2","Round":"3A","Group":"Lecture 1","Quota":"13","Bidders":"1","LowestBid":"1","LowestSuccessfulBid":"1","HighestBid":"1","Faculty":"School Of Computing","StudentAcctType":"NUS Students [P]"},{"AcadYear":"2011/2012","Semester":"2","Round":"3B","Group":"Lecture 1","Quota":"12","Bidders":"0","LowestBid":"0","LowestSuccessfulBid":"0","HighestBid":"0","Faculty":"School Of Computing","StudentAcctType":"NUS Students [P]"},{"AcadYear":"2010/2011","Semester":"2","Round":"1A","Group":"Lecture 1","Quota":"24","Bidders":"18","LowestBid":"23","LowestSuccessfulBid":"1","HighestBid":"1560","Faculty":"School Of Computing","StudentAcctType":"New Students [P]"}],"AcadYear":"2014/2015","History":[{"Semester":2,"ExamDate":"2015-04-29T17:00+0800","Timetable":[{"ClassNo":"1","LessonType":"Lecture","WeekText":"Every Week","DayText":"Wednesday","StartTime":"1000","EndTime":"1200","Venue":"LT15"},{"ClassNo":"1","LessonType":"Lecture","WeekText":"Every Week","DayText":"Friday","StartTime":"1000","EndTime":"1200","Venue":"LT15"},{"ClassNo":"1","LessonType":"Recitation","WeekText":"Every Week","DayText":"Friday","StartTime":"1300","EndTime":"1400","Venue":"COM1-0208"},{"ClassNo":"2","LessonType":"Recitation","WeekText":"Every Week","DayText":"Friday","StartTime":"1400","EndTime":"1500","Venue":"COM1-0208"},{"ClassNo":"3","LessonType":"Recitation","WeekText":"Every Week","DayText":"Friday","StartTime":"1500","EndTime":"1600","Venue":"COM1-0208"},{"ClassNo":"1","LessonType":"Tutorial","WeekText":"Every Week","DayText":"Tuesday","StartTime":"1000","EndTime":"1200","Venue":"COM1-0211"},{"ClassNo":"2","LessonType":"Tutorial","WeekText":"Every Week","DayText":"Tuesday","StartTime":"1200","EndTime":"1400","Venue":"COM1-0211"},{"ClassNo":"3","LessonType":"Tutorial","WeekText":"Every Week","DayText":"Tuesday","StartTime":"1400","EndTime":"1600","Venue":"COM1-0217"},{"ClassNo":"4","LessonType":"Tutorial","WeekText":"Every Week","DayText":"Tuesday","StartTime":"1600","EndTime":"1800","Venue":"COM1-0217"},{"ClassNo":"5","LessonType":"Tutorial","WeekText":"Every Week","DayText":"Thursday","StartTime":"1000","EndTime":"1200","Venue":"COM1-0218"},{"ClassNo":"6","LessonType":"Tutorial","WeekText":"Every Week","DayText":"Thursday","StartTime":"1200","EndTime":"1400","Venue":"COM1-0203"},{"ClassNo":"7","LessonType":"Tutorial","WeekText":"Every Week","DayText":"Thursday","StartTime":"1400","EndTime":"1600","Venue":"COM1-0203"},{"ClassNo":"8","LessonType":"Tutorial","WeekText":"Every Week","DayText":"Thursday","StartTime":"1600","EndTime":"1800","Venue":"COM1-0203"}],"IVLE":[{"Announcements":null,"Forums":[],"Workbins":[],"Webcasts":[],"Gradebooks":[],"Polls":[],"Multimedia":[],"LessonPlan":[],"ID":"05e78f5f-ad2d-4c19-9007-d623d5b49ddb","CourseLevel":"1","CourseCode":"CS2020","CourseName":"Data Structures and Algorithms (Accelerated)","CourseDepartment":"","CourseSemester":"Semester 2","CourseAcadYear":"2014/2015","CourseOpenDate":"/Date(1420387200000+0800)/","CourseOpenDate_js":"2015-01-05T00:00:00","CourseCloseDate":"/Date(1435679940000+0800)/","CourseCloseDate_js":"2015-06-30T23:59:00","CourseMC":"0","isActive":"N","Permission":"S","Creator":{"UserID":null,"Name":"Seth Lewis Gilbert","Email":null,"Title":null,"UserGuid":"67fe7872-7f29-439c-90f5-1436c099b0bd","AccountType":null},"hasGradebookItems":true,"hasTimetableItems":true,"hasGroupsItems":false,"hasClassGroupsForSignUp":false,"hasGuestRosterItems":true,"hasClassRosterItems":true,"hasWeblinkItems":true,"hasLecturerItems":true,"hasDescriptionItems":true,"hasReadingItems":true,"hasAnnouncementItems":false,"hasProjectGroupItems":false,"hasProjectGroupsForSignUp":false,"hasConsultationItems":false,"hasConsultationSlotsForSignUp":false,"hasLessonPlanItems":false,"Badge":0,"BadgeAnnouncement":0,"WebLinks":[{"ID":"0fde9190-cba8-4e74-a8ad-9b60286b736b","URL":"http://nb.mit.edu/","Description":"Nota bene - course materials and annotations","Order":1,"Rating":4,"SiteType":""}],"Lecturers":[{"ID":"0967825c-9da7-466e-b4fc-e860129d75c1","User":{"UserID":null,"Name":"Seth Lewis Gilbert","Email":null,"Title":null,"UserGuid":"67fe7872-7f29-439c-90f5-1436c099b0bd","AccountType":null},"Role":"Lecturer ","Order":1,"ConsultHrs":null},{"ID":"99c1b482-9237-46c5-81aa-acf9e6e04386","User":{"UserID":null,"Name":"KHOR SHI-JIE","Email":null,"Title":null,"UserGuid":"f19d631b-adb5-427b-89a7-5102507eefa5","AccountType":null},"Role":"Tutor ","Order":2,"ConsultHrs":null},{"ID":"c92f1326-a7d1-497f-a666-00d823aaf4aa","User":{"UserID":null,"Name":"PALLAV SHINGHAL","Email":null,"Title":null,"UserGuid":"0c02e2cc-a95c-47a6-b7fa-6030f85409b6","AccountType":null},"Role":"Tutor ","Order":3,"ConsultHrs":null},{"ID":"2db1d97e-d045-4a71-97a7-32bdac15bb85","User":{"UserID":null,"Name":"LEI MINGYU","Email":null,"Title":null,"UserGuid":"5fc418c7-71a0-4871-8ae3-17588bd585b6","AccountType":null},"Role":"Tutor ","Order":4,"ConsultHrs":null},{"ID":"dafbc178-51bc-43a2-a2fc-aef7c2fc8f99","User":{"UserID":null,"Name":"LIN XUANYI","Email":null,"Title":null,"UserGuid":"82a1a471-14e3-4fd4-b9f1-b9b00f945859","AccountType":null},"Role":"Tutor ","Order":5,"ConsultHrs":null},{"ID":"9cf91463-fc3f-406b-a630-56daf87ed4cf","User":{"UserID":null,"Name":"CHOO XIANJUN DAVIN","Email":null,"Title":null,"UserGuid":"e18c1394-8a06-4545-acbb-4bc2728eaa42","AccountType":null},"Role":"Tutor ","Order":6,"ConsultHrs":null},{"ID":"2d6a956d-b9e0-40bd-ada7-a5e0203a1932","User":{"UserID":null,"Name":"LEE YIK JIUN","Email":null,"Title":null,"UserGuid":"a076366b-6fd2-4907-8dae-329ce3a904ab","AccountType":null},"Role":"Tutor ","Order":7,"ConsultHrs":null},{"ID":"6a306f80-f0cd-4851-974f-582fc9b4954c","User":{"UserID":null,"Name":"SHARON LYNN","Email":null,"Title":null,"UserGuid":"c6a87e2f-c4cf-49b1-a78d-adea82762896","AccountType":null},"Role":"Tutor ","Order":8,"ConsultHrs":null},{"ID":"f2ceb64a-2533-4f87-8eb4-8249597f68b3","User":{"UserID":null,"Name":"ZHOU CHUYU","Email":null,"Title":null,"UserGuid":"bb898cc5-49ff-4c98-873c-18da6c136467","AccountType":null},"Role":"Tutor ","Order":9,"ConsultHrs":null}],"Descriptions":[{"ID":"1e5f053b-8835-4692-be49-41f07234cfff","Title":"Learning Outcomes","Description":"Overview: CS2020 is an accelerated course that provides a comprehensive introduction to algorithms and data structures. It is intended as a continuation of CS1010/CS1101s, combining CS1020 and CS2010 into a single fast-paced semester.
\n
\nFocus: The module will focus on the basic data structures and algorithms that lie at the core of computer science, and how they can be used to improve performance in real-world problems. Throughout the module, we will discuss how to model problems in different ways, and how differing strategies can yield very different performance characteristics. We will both analyze algorithms to better understand their asymptotic performance, and implement them in Java to understand the issues that arise in practice. The goal of this module is both to help you learn how to how to choose and use better data structures.
\n
\nOrganization: The module is divided into 5 segments:\n
\n\t- \n\t\tArrays and linear data structures
\n\t- \n\t\tSorting and trees
\n\t- \n\t\tHash tables
\n\t- \n\t\tGraph algorithms
\n\t- \n\t\tDynamic programming and other advanced material
\n
\nObject-Oriented Programming: Throughout, there will be a focus on object-oriented programming and Java programming. We will discuss how to formulate and model a problem in an object-oriented manner, focusing on basic principles of abstraction and encapsulation. We will also discuss implementation issues, including designing class hierarchies and error handling (i.e., exceptions). ","Order":1},{"ID":"e161ea4c-fa8c-4d4d-b8b3-222b757531f1","Title":"Workload","Description":"Summary: 4-2-2-4-3
\n
\n\n\t\n\t\t\n\t\t\t\n\t\t\t\tType | \n\t\t\t\n\t\t\t\tTime/week | \n\t\t\t\n\t\t\t\tSchedule | \n\t\t
\n\t\t\n\t\t\t\n\t\t\t\tLecture:4 | \n\t\t\t\n\t\t\t\t4 hours | \n\t\t\t\n\t\t\t\tWed & Fri 10am-12pm | \n\t\t
\n\t\t\n\t\t\t\n\t\t\t\tTutorial:2 | \n\t\t\t\n\t\t\t\t1 hour | \n\t\t\t\n\t\t\t\tFriday (TBA) | \n\t\t
\n\t\t\n\t\t\t\n\t\t\t\tDiscussion Groups:2 | \n\t\t\t\n\t\t\t\t2 hours | \n\t\t\t\n\t\t\t\tTBA | \n\t\t
\n\t\t\n\t\t\t\n\t\t\t\tAssignments:5 | \n\t\t\t\n\t\t\t\t5 hours | \n\t\t\t\n\t\t\t\tWeekly | \n\t\t
\n\t\t\n\t\t\t\n\t\t\t\tStudy time:3 | \n\t\t\t\n\t\t\t\t3 hours | \n\t\t\t\n\t\t\t\t | \n\t\t
\n\t\n
\n
\n","Order":2},{"ID":"8e5f053b-8835-4692-be49-41f07234cfff","Title":"Assessment","Description":"Tentative Weights (6 MC):
\n
\n\n\t\n\t\t\n\t\t\t\n\t\t\t\tType | \n\t\t\t\n\t\t\t\tDate | \n\t\t\t\n\t\t\t\tWeight | \n\t\t
\n\t\t\n\t\t\t\n\t\t\t\tQuiz 1 | \n\t\t\t\n\t\t\t\tTBA | \n\t\t\t\n\t\t\t\t TBA | \n\t\t
\n\t\t\n\t\t\t\n\t\t\t\tCoding Quiz | \n\t\t\t\n\t\t\t\tTBA | \n\t\t\t\n\t\t\t\t TBA | \n\t\t
\n\t\t\n\t\t\t\n\t\t\t\tQuiz 2 | \n\t\t\t\n\t\t\t\t TBA | \n\t\t\t\n\t\t\t\t TBA | \n\t\t
\n\t\t\n\t\t\t\n\t\t\t\tProblem Sets (9-10) | \n\t\t\t\n\t\t\t\t | \n\t\t\t\n\t\t\t\t TBA | \n\t\t
\n\t\t\n\t\t\t\n\t\t\t\tDiscussion Groups / Participation | \n\t\t\t\n\t\t\t\t | \n\t\t\t\n\t\t\t\t TBA | \n\t\t
\n\t\t\n\t\t\t\n\t\t\t\tFinal Exam (in reading week) | \n\t\t\t\n\t\t\t\t | \n\t\t\t\n\t\t\t\t TBA | \n\t\t
\n\t\t\n\t\t\t\n\t\t\t\tTotal | \n\t\t\t\n\t\t\t\t | \n\t\t\t\n\t\t\t\t 100% | \n\t\t
\n\t\n
\n
\nOur policy is to work as hard as we can to give each student the final grade that they earn, and this will be the guiding principle behind the final grade assignment.\n\n\t
\n","Order":3},{"ID":"2e5f053b-8835-4692-be49-41f07234cfff","Title":"Prerequisites","Description":"Obtain a grade of at least A- in either CS1010 or CS1101S.
\n
\nIf you did not secure a slot in the class via MPE, please e-mail your application to me answering (in no more than 5 sentences):
\n
\n(0) Subject of the e-mail: "CS2020 Application"
\n(1) Your name and matric number
\n(2) Which class did you take to meet the prereq (cs1010 or cs1101s) and what grade did you get?
\n(3) Are you a student in SoC? If not, do you have a minor in CS?
\n(4) Is there any other special reason that you should be accepted to cs2020?
\n
\n
\n
\n","Order":4},{"ID":"22e0a34a-0189-4024-9c2e-96c456d78945","Title":"Preclusions","Description":"CG1102, CG1103, CS1020, CS1020E, CS2010, CS1102, CS1102C, CS1102S
\n
\n","Order":5},{"ID":"439eb5c1-255c-40a5-b0eb-b948433b41d2","Title":"Advice from previous students","Description":"At the end of every year, I asked students to provide advice for future CS2020 students. Here is a selection of prior responses:
\n
\nMany students recommend it:
\n\n\t- \n\t\tIf you qualify for CS2020, definitely take it! [...] CS2020 makes you think about how to solve a problem in a manner you think that's best. No fixed answers, loads of flexiblity, great for learning.
\n\t- \n\t\tIf you like challenge, you should take it.
\n\t- \n\t\tWork hard and enjoy the problems!
\n\t- \n\t\tTake CS2020. Or die. xD
\n
\nStudents warn that CS2020 is hard:\n\n\t- \n\t\tPain guaranteed, Fun too. Time Sink if you cannot draw away from fun stuff.
\n\t- \n\t\tTry to work as hard as you can.
\n\t- \n\t\tMake sure you can pick up concepts quickly.
\n\t- \n\t\tTake it if you have the time to learn on your own [...]
\n\t- \n\t\t[Give] a warning at the start of the module [that] things are gonna be really tough, and that students have until week x to decide whether to go for cs1020.
\n\t- \n\t\tA trivial suggestion, but disclaimers would be good [indicating that problem sets can be very hard and time consuming].
\n
\nTeaching feedback:
\n\n\t- \n\t\tProf. Gilbert is a very approachable lecturer, and his lectures aren't too boring, and I think he gets good points across.
\n\t- \n\t\tFun and eloquent in explaining concepts.
\n\t- \n\t\tFirst thing first, you are one of the best lecturers i've ever met in NUS. Excellent!
\n\t- \n\t\tIt's a tough mod, but taught decently.
\n\t- \n\t\tI love the examples given during the lectures. It helps provide a clear pictorial view of what's going on, instead of lines after lines of code and/or mathematical formulations.
\n
\n","Order":6}],"ReadingFormatted":[{"ID":"04ba340f-27eb-4b46-a2c7-8375ca395aac","Title":"Algorithms","Author":"Robert Sedgewick and Kevin Wayne","Edition":"4th","PubYear":"2011","ISBN":"032157351X","Publisher":"Addison-Wesley","BookType":"Compulsory","AdditionalInfo":"","CompWebsite":"http://algs4.cs.princeton.edu/home/","Order":1},{"ID":"44396338-e7f0-4140-8e23-0342a9b89f47","Title":"Introduction to Algorithms","Author":"Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest","Edition":"3rd","PubYear":"2009","ISBN":"0262033844","Publisher":"MIT Press","BookType":"Supplementary","AdditionalInfo":"","CompWebsite":"","Order":2},{"ID":"cd74f739-c258-4ff0-ae40-7260a81f4bb1","Title":"Introduction to Programming in Java","Author":"Robert Sedgewick, Kevin Wayne","Edition":"","PubYear":"","ISBN":"0321498054","Publisher":"Addison-Wesley","BookType":"Supplementary","AdditionalInfo":"","CompWebsite":"http://introcs.cs.princeton.edu/java/home/","Order":3}],"ReadingUnformatted":[]}],"Lecturers":["Seth Lewis Gilbert"],"LecturePeriods":["Wednesday Morning","Friday Morning"],"TutorialPeriods":["Friday Afternoon","Tuesday Morning","Tuesday Afternoon","Thursday Morning","Thursday Afternoon"]}]}