#ma2311
Explore tagged Tumblr posts
iamnikoli · 1 year ago
Text
AY23/24 Sem 1 Module Reviews
This sem is probably the most difficult sem of my degree acads wise. Since I scored much better than expected in Year 1, I could afford to fully focus on core modules that would teach me useful skills related to my major. Hence, I decided to take 4 core modules, namely CS2040, DSA2101, DSA2102 and MA2311, along with GEN2061X. I did slightly underload to give myself more time for CS2040, which has a very high workload. I was also expecting a drop in GPA since most of the modules I took this sem weren't exactly easy or fluff. Nonetheless, I grew much closer to the friends I worked with in the different mods, and it made all the difference to my mental well-being as well as my academic performance.
CS2040
Module Coordinator & Lecturer: Dr Chong Ket Fah
T/A: Gary (tutorial), Chao Ming (lab), Sourabh (lab)
Lecture Topics/Schedule:
Week 1: Course Admin + Intro to Java, Analysis of Algorithms 1 Week 2: Analysis of Algorithms 2, Sorting 1 Week 3: Sorting 2, List ADT 1 (Array List, Linked List, Stack, Queue) Week 4: List ADT 2 Week 5: Map ADT (HashTable) Week 6: Priority Queue ADT (Binary Heap) Week 7: Disjoint Sets ADT (Union Find Disjoint Set), Ordered Map ADT 1 (Binary Search Tree/AVL Tree) Week 8: Ordered Map ADT 2, Graph Intro + Graph DS Week 9: Graph Traversal and Applications 1 Week 10: Graph Traversal and Applications 2, Minimum Spanning Tree  Week 11: Single Source Shortest Path 1 Week 12: Single Source Shortest Path 2, All Pairs Shortest Path Week 13: Revision
Deliverables:
Tutorial attendance/participation - 3% Lab attendance - 2% One-Day Assignments (ODAs) - 1.5% x10 Take Home Assignments (THAs) 1.5% x8 qns, 2 qns per assignment Visualgo Quiz - 4% x2 Midterm - 20% Final Exam - 40%
Other Comments:
Although this module is hard (as you probably already know), I would say I enjoyed it for the most part. First of all, Dr Chong Ket Fah is an amazing lecturer, and he explains things very clearly. This made understanding the difficult concepts a lot easier. Dr Chong is also very nice and understanding towards students, for example, I fell sick one day before a one-day assignment and he extended my ODA deadline to the day after my MC ended which was basically one week later lol. These things might seem insignificant but they are highly appreciated by students (me at least).
There was a lot of content to cover in this module, and frankly, it can sometimes get overwhelming. On paper, there are 3 hours of lectures every week on Zoom exclusively, but Prof Chong often overruns to about 4-5 hours of lecture time a week. Not to worry, the lectures are recorded and you can watch them later. It is paramount that you keep up to pace with the lectures as it's not realistic to cram all of it in reading week, anyway you'll need the lecture content 1-2 weeks later to solve the ODAs and THAs. Also, we're expected to learn Java within the first 2 weeks, as prof does not teach java, he just gave us a learning package/crash course to do on our own. This is very important for students with no Java background like DSA students because we'll be expected to complete all our coding assignments in Java from end of week 2/week 3 onwards.
I attended the tutorial slot by Gary, and Gary is absolutely goated. He is very clear in explaining things, and often talks about potential extensions/modifications to the questions which may come up in the exams. This was very helpful in cultivating the sort of skills and thought process needed in the midterms/finals. Gary is also very chill and dedicated, we can message him on Telegram if we have any questions, and usually the night before the exams, he would stay up all night to answer questions that we had. Where are you gonna find such a dedicated TA HAHAHA please give this man a raise The only not-so-good thing about the tutorials is that the bulk of questions are pseudocode/coming up with algorithm questions, but the majority of questions in the exam are MCQ. I would've liked to see more of the latter in the tutorials as many of us felt unprepared for MCQ-style questions in the exams. From my understanding, the exams used to be a lot heavier in pseudocode questions, which might explain such an emphasis on such questions in the tutorial. If so, the tutorials might need a refresh.
Labs are essentially dedicated to solving ODA questions, and you can ask your lab TAs if you're stuck on either the ODAs or THAs. Apparently, they are also the ones that grade them. For me, I left my whole Friday empty in case I got stuck on an ODA and needed more time to solve it, since you have to complete in 24 hours. I also worked on the problem before my lab slot, like once the assignment opened at 10am. This was to ensure I made full use of my lab TAs expertise during the precious 2 hours if I got stuck, instead of trying to understand the question and come up with a first iteration to solve it. The ODAs in general were not terribly difficult though. As for the lab TAs, most of us preferred to talk to Chao Ming because he was more approachable and helpful. However, we often don't understand each other's algorithm suggestions HAHAHA. On the other hand, Sourabh was very passive. Maybe he was in charge of doing the assignment grading? But my friend asked him questions on telegram and got blue-ticked (I think more than once) so there's that. Oh also, you're required to submit pseudocode before or during the lab which also acts as your lab attendance grade, which is why you should start working on it before the lab because 2 hours to do pseudocode and actually code and debug is very tight.
THAs were more difficult, and I spent about 1-4 days on each question. There were 4 THAs in total, 2 questions in each THA. Discussing algorithms with friends really helps because a lot of these problems are not straightforward and require a good grasp of lecture content along with creativity. Unlike CS1010, your code now has to be efficient and meet the required run-time, otherwise it will not be accepted. Hence, talking to friends to see if there are other more efficient ways of solving the problem is highly efficient on your time needed to solve the THAs. Do note that looking at other people's code is not allowed, as mentioned by the prof so just be careful not to show actual code when discussing. The worst THA though probably has to be the AVL tree one, it was incredibly painful to have to build the AVL tree on your own and do all the rotations. Maybe deforestation isn't so bad after all Nonetheless, you should score full marks for both the ODAs and THAs as most people do after countless tries or discussing algorithms with friends.
Midterms and finals were pretty similar, exams were on Examplify and the bulk of it was MCQ questions, with 2-3 pseudocode/come-up-with-algorithm questions. The midterm tested until hashtables and was apparently harder than finals. As many of you know, Prof Chong sets hard papers so be prepared. Make sure you read the question properly as there's a lot of constraints/things to look out for to get the correct answer. Prof's questions also tend to be very long and confusing so it might take a lot of time and brain-power to understand what's going on in the question. Exams were open-book closed internet, the midterm was 1.5 hours and the final exam was 2 hours. You have to have a good grasp of the various algorithms, how they work, how their time complexities are derived and subsequently in what situations each algorithm works best/worst. I highly recommend working on the pseudocode questions at the end first because they need more time to think and come up with the solution, and if you don't know anything just write something out, and you'll get at least one mark. The MCQs can still be guessed if you run out of time, but try to do them well because they form the bulk of the marks. Do lots of PYPs to get a feel of the MCQ questions and see how the pseudocode questions should be answered. Also, for the pseudocode questions, I observed that writing in paragraphs/essay-style is much better than the usual code style because there's more ambiguity and it's easier for the marker to understand your algorithm's logic compared to code-style which will often be ridden with errors. For finals, prof actually dropped quite a few hints when he was going through the PYPs without answers in Week 13 lectures so do make sure to watch that. My score for the midterm was 58/100 (77th percentile), and the final exam was 75/95 (93rd percentile). Midterm stats 0 39 47 56 95, finals stats 0 41 50 62 91. Finals was originally out of 100, but there was an issue with the time complexity required and getting the correct answer (apparently the solution to solve it in that time complexity results in overcounting) in the last pseudocode questions, so prof re-based it to 5 instead of 10 marks and marked according to the next best algorithm to get the right answer.
Lastly, there were 2 Visualgo quizzes held during lab slots, one in Week 7 and the other in Week 13. Make sure to practise a lot of Visualgo questions in hard mode. I found the week 13 quiz much harder because the later topics were harder, especially MST. As a result, I got 14/15 for it because I got the 2nd best MST question wrong (so saddd). The first quiz was pretty easy though. Most people get full marks for both so.
All in all, I find this module difficult but also rewarding. A lot of the concepts taught are important, for example, I'm working on a project now that makes use of what I learnt in 2040. All the best to those taking it in future sems, rest assured Dr Chong is a very good prof and you're in good hands! Just put in the work and you should stay afloat
TLDR:
High workload, don't overload (in fact try to underload) when taking this mod Leave your Fridays empty to work on the ODAs Learn Java ahead of time if you can to get used to the syntax, don't leave THAs to the last minute because you need time. Discuss with friends to maximise efficiency on coding assignments Do PYPs and understand how each algo works, how the time complexity comes about, when to use what algo Do lots of Visualgo practice for the quizzes
Grades:
Expected grade: A- Actual grade: A
DSA2101
Module Coordinator & Lecturer: Dr Huang Yuting
T/A: Augustine
Lecture Topics:
R programming.
Importing data into R.
Data manipulation with R (Tidyverse)
Principles of data visualization.
Introduction to the grammar of graphics (ggplot2)
Exploring data through visualization.
Deliverables:
Tutorial Attendance - 5% DataCamp assignments - 10% Group project - 15% Midterm - 30% Finals - 40%
Other Comments:
This module has a pretty light workload, and the content is quite straightforward. It's a coding mod about data cleaning and visualisation using R. I thought I would be disadvantaged as I was pre-allocated DSA1101 in Sem 1 last year under Dr Sun, which had little coding emphasis and more stats/math, whereas in Sem 2 Dr Daisy Pham took over and revamped the whole module to essentially be about R coding. However, the first few weeks of lectures were about R coding and it was more than enough time to catch up. Also, it turns out that I'm quite quick at debugging in R, which is a great asset in exams. Dr Huang is a good lecturer in my opinion, she is concise and emphasises on the important things. Lectures are basically her going through slides which show various ways to code using a variety of tools/functions, and often she'll do a live demo to reinforce what was taught in the slides. She encourages us to code alongside her, and for this reason (apart from the fact that lectures are at 8am), I think it's better to watch the recorded lectures as you can pause and try them out yourself before continuing. Prof is also very approachable and quick to reply my emails, even if I ask a barrage of questions.
Tutorials are coding questions for you to try out on your own, and the TA will go through them. Augustine was a good TA, on top of the solutions provided by prof, he would add other methods to get the same result, and he was decent at explaining the code flow and thought process. He also responded to my queries on Telegram for the most part. As for the tutorial questions, I highly recommend trying them out on your own without using chatgpt to debug, because it's good practice for exams.
DataCamp Assignments were 8 x 1.25% online modules/courses? on DataCamp. These are free marks so just make sure you complete them by the deadline. DataCamp honestly isn't very helpful in learning because almost everything is filled in, and they just need you to fill in a few blanks.
The midterm was a 1.5-hour Examplify, open-book but closed internet exam, held in Week 8 at 8am (!!), and this was probably the most difficult part of the course. Most people weren't mentally awake at 8am, and the paper was quite difficult. It is easy to forget a certain function or have syntax errors, and R isn't the easiest language to debug in. It might be tempting to keep working on one part before moving on to the next because each sub-part leads to another, but the grading was very lenient in the sense that even if you miss out on a lot of things, you can still get the bulk of the marks. The key point is to try and complete everything and you should be above the median already. Since you don't have internet access, it is paramount that you do the tutorials as practice without the internet to prepare for the midterm. There were also a lot of small things that tripped people up, such as not being able to read the excel file in R when the excel file is open on your computer, ctrl-c ctrl-v being locked, the question paper on Examplify only taking half of the screen and couldn't be expanded etc. Overall it was a bad experience but luckily the grading was so kind. I got 27.5/30, the median was 21.25/30. Also do note that you have to copy your code from R into Examplify and differences between the R code submitted on Canvas and the Examplify code will be subjected to penalties. However, the Examplify exam does not auto-submit when time is up because there's 15 minutes after the exam to complete all the admin, so make sure your file can knit and all (basically the correct version of your R file) before you copy and paste into Examplify.
The group project was a report where we had to come out with 3 different plots using ggplot to investigate a meaningful question from one of the datasets given. We were allowed to choose our group members regardless of tutorial slot, so be sure to take this mod with friends!! My group did San Francisco Rentals, which a lot of people avoided because there were a lot of observations and variables/columns, but it turned out to be quite easy as we only had to select a few columns to work with. I had other friends who did the Lego dataset which seemed easy at first glance, but turned out to be a nightmare because you had to join a lot of different tables together to get the data you wanted. Unfortunately, I don't know why my group underperformed, I only got 12.5/15, and I assume a lot of people would get 13-15 out of 15 (stats were not released). Anyways just make sure you don't leave the project to the last minute because it can be quite tedious to code and have to write the report.
Finals were a lot easier than midterms. The format was Examplify open-book, closed-internet 2-hour exam, consisting of 25 marks of MCQ/fill-in-the-blank questions and 15 marks of coding. The coding this time around was much simpler, and possibly because we're more experienced by then. The MCQ questions were very easy, and if you were unsure of anything (eg. the definition of tidy data), you could just Ctrl-F. Hence, I recommend collating the lecture slides into one document to more efficiently Ctrl-F. This also helps for the coding questions, as there was 1 data-cleaning and 2 ggplot questions, and if you're unsure of which ggplot function to plot the graph, there's a summary on the lecture slides, alongside an example of the syntax to come up with the plot. Hence, I finished the exam with half an hour to spare and checked through my answers. I think the bell curve for this paper is quite steep because it was relatively easy. There was only one part that tripped some people up, which was removing NAs before or after performing pivot-longer. This will yield different results and affects 2 MCQ questions and the 5 mark coding question. Other than that, the exam is straightforward so be sure not to make careless mistakes.
TLDR:
Practise tutorials without ChatGPT Go through tutorial questions and answers, collate lecture slides into 1 document for easy ctrl-F-ing in the exams In the exams, aim to complete everything rather than perfect certain parts. Move on if you're stuck Don't be careless, read the questions carefully Work with trusted friends for the group project to minimise pain
Grades:
Expected grade: A- Actual grade: A
DSA2102
Module Coordinator & Lecturer: Dr Timothy Wertz
T/A: Tianyun
Lecture Topics:
Week 1: Introduction, Scientific Notation Week 2: Computer Arithmetic, Matrix Operations and Complexity Week 3: Systems of Linear Equations Week 4: Elimination with Pivoting, LU Factorization Week 5: Cholesky Factorization, Linear Least Squares Week 6: Gram-Schmidt Process, Reflections and Rotations Week 7: Singular Value Decomposition Week 8: Eigenvalue Problems Week 9: Power Iteration, QR Iteration Week 10: Singular Value Decomposition Revisited, Interpolation, Practical Interpolation Week 11: Orthogonal Polynomials Week 12: Numerical Integration Week 13: Error Formulas and Composite Quadrature, Other Integration Algorithms, Numerical Differentiation
Deliverables:
Homework - 5% x4 [lowest HW score can be substituted by lecture attendance grade] Midterm - 30% Finals - 50%
Other Comments:
This module is not difficult, but there's just a lot of content to remember. First of all, Dr Wertz is a pretty good lecturer, he is concise in explaining things and he splits his lectures into 3 categories: technical, conceptual, and enrichment. About 40% of the slides are enrichment which is nice to know but not required for the homework or exams. I would've liked to see a labelling of each slide under one of the 3 categories which would have made revising for exams a lot easier. Prof is also very helpful and answers questions at the end of the lecture. However, he also speaks very fast and tends to mumble/have run-off sentences so if your first language is not English, you might have a hard time understanding him.
There were 4 homeworks, each was out of 50. Like most math modules, the homework median is usually close to full marks, except for Homework 2 which had a killer counting operations of banded matrix question. As usual, discuss with friends to check your answers. The homework questions are mostly not tough, they are questions that are covered in lectures. Each homework also has an R coding question, but it's usually quite simple as prof has pseudocode in the slides, you just need to adapt them into actual code. If not, the tutorials also have an R question usually, refer to the tutorials for inspiration. Also, prof took lecture attendance, and while lectures are not compulsory (lectures are recorded too), it can replace your lowest homework grade, whichever is higher. I highly recommend getting the attendance grade as a safety net.
Tutorials were apparently hit-or-miss. My TA, Tianyun, was a pretty good TA and he explained relatively well. Sometimes, I didn't understand him but he was very approachable to me asking him questions after tutorial and he cleared all my doubts. He was also very dedicated, because there was one week that another TA took over him, and damn he kinda sucks because he doesn't explain well and totally skipped the R coding question, which I needed to solve a homework question. After asking the substitute TA about it, he just shrugged and said he doesn't provide R code. However, after I emailed Tianyun about it, he came up with his own R solution to the problem as prof hadn't sent him the solution yet. This sort of proactiveness is appreciated. As for the tutorial questions itself, it's mostly not hard and quite a good reflection of exam questions.
The midterm was a 80-minute pen-and-paper, scientific calculator exam, and we had to bring our own writing paper and scan our answers to upload ala homework-style within 10 minutes. The paper was relatively simple but computationally intensive, so avoid making careless mistakes. We were tested up to Week 6 content, and it was quite right-skewed. I got 41/50, the stats are 0 33 39 43 50. The final exam was a 2-hour pen-and-paper, scientific calculator exam that was out of 50. It was honestly even simpler than the midterm because it was less computationally-intensive, the first question was a bit odd, asking us to consider the number of operations to get the time complexity of some algorithms. The rest of the questions were standard, and mirrored questions from lecture examples, tutorials or the midterm/final practice papers that prof gave. Prof said he sets easier papers by not allowing us to bring cheatsheets in, and I think he kept to his word. The hard part comes in memorising the sheer number of algorithms and ways to solve the questions.
TLDR:
Keep up with tutorials so that you remember the algorithms more easily As usual, check homework answers with friends, attend lectures for safety net/grade boost in case you screw up a HW Try to understand the process of the algorithms to make life easier when studying for exams Don't make careless mistakes in exams
Grades:
Expected grade: B+ Actual grade: A
MA2311
Module Coordinator & Lecturer: Assoc Prof Leung Man Chun
T/A: Shixiao
Lecture Topics:
1. Sequences (Monotone convergence theorem, series, absolute and conditional convergence) 2. Tests of convergence (Power series and interval of convergence, Taylor’s series, differentiation and integration of power series) 3. Vectors in R2 and R3 (Dot product and cross product) 4. Functions of 2 or 3 Variables (Limits and continuity, partial derivatives, directional derivatives, gradients of functions, Taylor’s formula, maximum and minimum, second derivative test) 5. Vector-valued Functions of Several Variables (Chain rule, tangent planes and normal lines to surfaces in R3, Jacobians (change of volume/area element), Lagrange's multiplier method) 6. Multiple Integrals (Iterated integrals, change of order of integration, change of variable formula for multiple integrals)
Deliverables:
Midterms - 20% Finals - 80% (!!)
Other Comments:
Despite my grade for the mod, I can safely say this is the WORST mod I've taken in NUS so far. This prof really sucks, period. Although some math majors were warning ppl about him in the CHS group chat, I thought that since the module content was easy, even if the prof is bad it shouldn't be too big a problem. How wrong I was HAHA (but tbf, I heard Charmaine Sia who's teaching MA2104 isn't that great either and 2104 is tougher so it's not an easy choice). At this point, the module should be renamed to Techniques in Advanced Gambling because I felt like I was throwing a dart blindfolded and seeing what grade I would land. The 80% finals really made it feel like a lottery.
Let's start with the lectures. Someone else mentioned that the lecture slides were bad, and yes it's true. It's just emptiness all around, like very few words and some random diagrams and pictures. I can understand if the prof wants us to take notes, and that's why he left so many blanks. But the problem is that his lectures hardly refer to the slides. 99% of the time he's writing some stuff on paper and showing it to the lecture hall on the visualiser, so no one knows which part he's explaining, especially since he really cannot teach and explain things well to us. I think it's very hard to learn content from his lectures, but I do think there is some value in watching them which I will explain later. I managed to get my hands on the previous prof's lecture slides which helped me to keep up with the tutorials but I didn't watch the lectures from midterms until reading week, as a result, I didn't exactly master the later topics until reading week.
As for the tutorials, Shixiao was a pretty good TA because he would explain things in a way that made sense. He was also helpful despite a lot of dumb questions I asked at the end of each tutorial lol. He was probably the saving grace of this mod. However, the tutorial questions were directly ripped from last AY's MA2311 (this prof was the TA for the mod then) and the prof is so lazy that he didn't even remove the previous prof's name from the tutorial solution slides!! So this means no one really knows what kind of questions the prof will set since there's no reference or anything.
Midterms was a 1-hour pen-and-paper exam held in the lecture hall on Week 8, and it was open-book. Apparently, it was closed-internet but there was nothing to block internet access. Nonetheless, you have access to all your notes and I also downloaded Geogebra offline to check limits lol. We were tested until radius of convergence. 2 questions were directly from the tutorial but just slightly altered, the last question was slightly unorthodox but still doable. I got 19/20, and I think a lot of people did too. We only got back the midterms on the very last lecture in Week 13 so if you realised you screwed up there's honestly not much time to catch up. The average according to the prof was around 18/20.
Finals was your typical 2-hour, pen-and-paper, scientific calculator and 1 A4 double-sided cheatsheet math final exam. (Note: There was 1 part of question 1 that was voided and the paper was re-based to 95 instead of 100.) The fact that finals was 80% was extremely scary, and it was a sink-or-swim situation. I spent the bulk of reading week looking through the textbook and trying out questions from there (answers can be found online if you're resourceful enough), and alongside going through the prev AY's prof notes in more detail I got a better idea of the content. To be fair, most of the content was not difficult except for the part on volume multiple integration. Nonetheless, I still poured a lot of effort and time into this module because I couldn't risk the 80%. After understanding everything, I watched the prof's lectures to see if there was anything I missed out on and also to get some hints. He was emphasising one particular question at the end of the last week 13 lecture which I added wholesale into my cheatsheet, and lo and behold, it came out in the last question of the finals. As for the finals paper itself, I could do most of the questions, it was a relatively even spread across all the topics in both the first and second half but I wasn't sure if I got them correct because even the first question, which was a giveaway L-hopital limit question, I got wrong LOL. I think there were a few questions that felt a bit strange and unfamiliar, but if you know your concepts well it should not be an issue. Overall, some people felt it was easy and some felt it was difficult, which I attribute to whether you know the content and watched his lectures or not. Still though, 80% is crazyyyyyy
TLDR:
Listen to other ppl's advice, don't take this mod under this AY's prof unless you like gambling if you're taking it under him, I wish you all the very best
Grades:
Expected grade: idek Actual grade: A+
0 notes