CS1010J Programming Methodology in Java: Module Review

Disclaimer

These are all my personal opinions and do note that assessment of modules may differ depending on the year they are taken. Most of the information is correct at the time that this post is uploaded.

Table Of Contents (Toggle)

Module Breakdown

Grades matter.

Tutorial Attendance - 5%
4 Problem Sets - 8%
Mock Midterm Assessment - 2%
Midterm Assessment - 25%
Practical Assessment - 20%
Final Assessment - 40%

Taught by: Prof Zhou Li Feng (Lecturer)

Module Details

Coding in Java!

This module is taken by Information Systems majors and is a pre-requisite to CS2030 and CS2040 which will be taken by most Computing students. The programming language taught is Java.

This module has 2 hours of lecture and 2 hours of tutorial time. For AY21/22 Sem 1, the lectures were all pre-recorded and lecture slides were provided by the Prof Zhou beforehand. The lecture timeslots were used as consultation time with the Prof where you could clarify your doubts about the week's lecture and the problem sets. You had to do tutorial questions and some problem sets before attending the tutorials, which were conducted by teaching assistants (TAs).

Problem sets are submitted every 2 weeks onto the CodeCrunch website and your selected sets will be evaluated by your TAs and comments will be given.

To prepare for the midterms, the mock midterm assessment was used to familiarize the students with the LumiNUS quiz platform. This mock assessment was free 2% marks for all students who attempted the quiz!

Midterms, practical and final assessments tested you on different aspects of programming:

  • Midterms: theory-based – "What is this concept?"
  • Practical: practical-based – "How is the concept implemented in code?"
  • Final: both theory and practical – "How do we solve problems using these concepts and applying them in code?

Module Topics

So what do you actually learn?


This module covers the most fundamental topics for programming in Java.

  1. Intro to Java: Classes, Methods, Statements
  2. Modular Design: Methods, Naming Conventions etc
  3. Selection statements: if...else
  4. Repetition statements: for, while, switch
  5. Debugging: print statments etc
  6. Arrays
  7. Search and Sorting
  8. 2D Arrays
  9. OOP
  10. Recursion
  11. Strings

My Experience

Expectations vs Reality (Photo from Frabz.com)

Since I have programming experience from A Level Computing, this module was manageable as it covered familiar topics and concepts which I had previously learnt.

On a weekly basis, I spent about 1.5 hours watching the pre-recorded lecture videos (OTOT), 1 hour on tutorials and 2 hours on problem sets. It is really normal to spend more time on the videos and problem sets, especially for harder topics such as 2D arrays, recursion and OOP! I found the topics easy to understand as Prof Zhou explained the terms and concepts in the most rudimentary terms.

Completing problem sets took up the bulk of my time in a week as I would try to complete some every day. It is really crucial to practice daily and not wait till the weekend of submission to complete all the sets!

The assessments were not difficult but it was harder to score than expected. The tracing questions during exams were tricky and full of "traps".

🌟Simply understanding the content was not enough, rather it was how careful you are in problem-solving that was more important. If you are careless (like me), you will lose marks very easily.

Post-exam trauma 

The practical was much harder than the mock exam. It is useful to attempt the harder problem sets (labelled in as DIFFICULT by the Prof) to know the difficulty of the practical exam.

🌟Spending more time thinking about your problem-solving approach is far more important than rushing to code immediately or "hard coding" the problem.

After completing this module,

Expected Grade: B+

Final Grade: B+

Tips From Jean

  1. For beginners (to coding!), programming is ❎ NOT all about coding, but is about problem-solving! Spend time thinking about the concepts before jumping into coding.
  2. Ask questions. There is no stupid question, other than the question you did not ask. This module is the foundation to your other CS modules, so seek to understand all the concepts taught.
  3. It goes without saying, practice makes perfect. Do your problem sets weekly, you only have to complete 10+ sets, which will hone your coding skills.
  4. Do problem sets with friends. Often times, the problem has been solved by someone else before. As a starter, focus on learning how to solve problems rather than what code you should write.
  5. Keep trying, don't S/U this module. This module is (sort-off) has no bell-curve, so give this module your all!

Additional Resources

If you want to learn more about the module, check out nusmods.com. 👇🏼

NUSMods
NUSMods is a timetable builder and knowledge platform, providing students with a better way to plan their school timetable and useful module-related information that are community-driven.
CS1010J Module Information on nusmods.com

If you want to learn Java, I highly recommend this tutorial. If you are able to sit through the whole 2 hours of this video, you should well-prepared to take on Java and this module. 👇🏼

Java Tutorial for Beginners [2020]
Java tutorial for beginners - Learn Java, the language behind millions of apps and websites. 🔥 Want to master Java? Get my complete Java mastery bundle: htt...
If you want to learn Java OTOT

🥰Learnt something new from this blog post? Remember to jot down some notes for yourself and share this knowledge with your friends!

💕Since you are here, why not join the club? I spill the tea on university tips and more in the member's portal 😉 Join now.

🤝🏻Want to collab or be featured? Let's chat on IG or email!