Review of CS1010E: Programming Methodology
Updated: Dec 19, 2020
Year took: AY2019/2020 Semester 2
CS1010E is a mandatory computing module for engineering freshmen. It was previously taught in C language and my academic year, it was taught in python. CS1010E is an introductory module for computing. It aims to introduce basic important computing concepts utilized in problem-solving. As a complete newbie to coding, this module caused me countless hours of frustration, confusion, and annoyance.
I have looked through other reviews for CS1010E online and I cannot relate to reviews that say it is easy. Unless you are proficient at computing, CS1010E will be tough. Even some computing background is not enough to tide you over. For complete newbies, I suggest seeking your TA, experienced friends, or engaging an external tutor for this module. All CS1010E information and materials will be uploaded on Coursemology instead of Luminus. Due to the large class size, all assessments are “grade-based”. The assessment criteria are as follows:
1. Assignment - 13%
2. Challenge Training – 2%
3. Extra Training – 2% (Marks that may not be taken into calculation if you obtain full marks for assignment, challenge training, and mock practical exam)
4. Attendance – 4%
5. Mock Practical Exam – 1%
6. Practical Exam 1 – 15%
7. Practical Exam 2 – 15%
8. Final – 50%
I took this module while Singapore was adjusting to COVID-19. Hence, some aspects of my experience may be different from yours.
Every week, there was a 2-hour lecture. There were two lecturers throughout the entire module, Prof Adi, and Prof Zhou. Content covered includes fundamental programming constructs (variables, functions, expressions, etc), fundamental data structures (arrays, strings & composite data types), recursion, and debugging. A new basic computing concept is introduced every week. In some lectures, the lecturer will run examples using Visual Studio Code (VSC). This helps us to visualize the working of the code while the professor explains.
I had a tough time understanding the lecture content. I am unsure if it is because the concept is not well taught or because this is my first-time studying computing. After all, computing is vastly different from every other subject I have studied.
Tutorials are held weekly starting from week 2 and I struggled with the tutorials initially due to my inexperience. I was unaware of simple tips such as having a print statement to check my values. Thus, it was difficult for me to check which part of my code was wrong. Thankfully, my sense of computational thinking improved after multiple tutorials and assignments. This helped me to make sense of more difficult python questions that I faced.
10 lines of code by myself? STONKS. (Source)
In class, my tutor was patient and took the effort to go through every individual code in the tutorial. He broke down difficult concepts, making made it easy to understand. Sometimes, he would share useful hints for assignments and provide skeleton codes.
Within the semester there are 7 assignments to submit, with the first assignment given in week 2. The deadline for each assignment ranges from one to three weeks. It may seem long but do not let it fool you. Due to its extreme difficulty, one assignment question can take you days to complete. I spending countless hours piecing together a working code as I looked through Stack Overflow, Indian YouTubers, and random old blogs. The first two assignments are exceptions as they are easier by comparison.
Literally me every week. (Source: Reddit)
No solution on Stack Overflow? IMPOSSIBLE!!! (Source)
The assignments made me immensely stressed out every week. I could only solve 30% of the assignment questions by myself and I felt so incapable. Although I could comprehend concepts and had an idea of what to do for each question, I could not code correctly due to inexperience. Fortunately, my then-boyfriend was also taking CS1010E and he has coding experience. Every week, we would spend at least 3 hours going through the assignment and he never complained once. He would break down each question and guide me to formulating the correct code. Without his guidance, I would have not been able to submit my assignments. I am extremely thankful for the time, commitment, and patience my boyfriend had shown me.
Plagiarism is a serious offense thus do not copy any code directly from your friend. Each code will be checked for plagiarism in a system and flagged codes will get a 0 for the entire assignment. If you discussed the code with your friend, here are some tips to differentiate your codes.
1) Change iteration to recursion or vice versa
2) For loops can be changed to a while loop
3) Name variables on separate lines or multiple variables on the same line
Coursemology is updated weekly with new lecture training, challenges, and additional questions. These trainings are optional and contribute 2% to our grades. Throughout the semester, I did not submit any trainings. My friends mentioned that training includes a mixture of easy and difficult questions. Thus, they managed to score some easy marks over the weeks. Do note that the marks allocated for each question are less than 1%. We must answer several questions correctly over the weeks to accumulate at least 1% of marks.
Remedial classes started on week 5 and it served as a consultation session. Any student could attend and have their doubts answered during the session. Unfortunately, remedial sessions were held at the same time as my tutorial so I could not attend any remedial sessions.
Two practical examinations (PE) were planned for the semester. The first PE was held on the Saturday of week 6 and due to COVID-19, it became a take-home assignment. Despite its name, it was still regarded as an examination. The lecture content taught from week 1 to 6 were tested. I found the PE to be exceptionally difficult and many students shared the same sentiment. If the assignment questions are bad, then the PE is worse. I struggled to produce the correct code and even when I did, I was hard coding. Dejected, I submitted my code through Luminus at the end of the examination.
Can I have at least some pity marks please? (Source)
After practical exam 1, it was revealed that there are numerous cases of plagiarism. The problem was so rampant that news outlets like The Straits Time reported about it. There was widespread panic amongst the student body from the fear of disciplinary actions. Eventually, the School of Computing formed a committee to investigate the incident. Students caught for plagiarism were issued warning letters, had a record on their profile, and their marks for the PE were voided. Harsher disciplinary actions may have been taken but I am not sure.
PE 2 took place on the Saturday of week 12 and it was an online examination with proctoring through Zoom. The content tested were data processing and OOP. Compared to the first PE, I found the second PE to be easier. The questions were similar to the ones in the assignment and mock PE; thus, I was not left stumped like the last time. As this was an open book exam, I could refer to the assignment and mock PE. I answered whatever questions I could and submitted my code through Luminus. Unfortunately, I was penalized for leaving important functions as a global variable instead of copying it into the task. This caused me to end up with a bad grade for PE2.
Due to COVID-19, Singapore raised its DORSCON level to orange, and midterm was canceled. The weightage of marks was transferred to the final exam and final now accorded for 50% of my grades.
Unlike the practical exams, final did not require us to submit codes. Final was comprised of 50 questions of two types: MCQ and tracing questions. It was also an open book exam with proctoring through Zoom. In preparation, a mock quiz was opened on Luminus for practice. However, I felt that it was insufficient because that was the only practice given. Thus, I asked my friend for the CS1010E midterm paper and worked on it. My ex-boyfriend volunteered to elaborate on questions that I got wrong and cleared my remaining misconceptions.
I found the final exam to be manageable. The type of questions set was similar to the ones in the mock quiz on Luminus. Regrettably, I do not have tips to give for final because I am not proficient at computing.
CS1010E is the most difficult module I have taken in NUS thus far. On the day before the first practical exam, I was so anxious and terrified. The thought of submitting a blank script and retaking the module was frightening. I know that without my ex-boyfriend’s guidance, my worries may have turned into reality. I am and will always be immensely grateful for the time he devoted to teaching me the basics of python.