CS1010J Programming Methodology

Module: CS1010J Programming Methodology

Semester taken: AY 2018/19 Semester 1

Lecturer: Dr Zhou Lifeng

Tutor: Mr Subhodip Mandal

Textbook: “Introduction to Programming with Java – A Problem Solving Approach”, 2nd edition, by John Dean and Raymond Dean, McGraw-Hill (no, you do not need this textbook at all)

What it is about

This module introduces the basic and fundamental concepts of programming to all Information Systems students with or without any background in programming. It is taught in Java (as opposed to the other CS1010-equivalent modules taught in other languages) and serves as a pre-requisite for higher-level programming modules (such as CS2030 and CS2040). You will learn how to write a simple program with a maximum of around 200 lines, implementing logic such as selection statements, loops, arrays, basic OOP and simple recursion.

Assessment components

  • 8% - Tutorial Attendance: Attended at least 8 out of 10 tutorial lessons.

  • 8% - 4 Problem Sets (homework): Small coding assignments to be done at home and submitted to CodeCrunch.

  • 10% - Mid-term Assessment: 1-hour open-book test (20 MCQs).

  • 24% - 2 Practical Exams: Each 1 hour 30 minutes of coding on the school’s computer (2 questions).

  • 50% - Final Assessment: 2-hour open-book test (mix of short answers writing the output of a program and long answers of writing the code of a program).

Comments

This module is the first module that exposes students to the world of programming and covers the basics of writing a simple program using selection statements, loops and arrays (including 2D arrays). Basic Object-oriented Programming (OOP) and recursion is also taught towards the end of the module in preparation for the higher-level modules.

As someone with prior experience in programming, it certainly helped a lot in allowing me to solve problems at a much faster pace than my peers, since I was already used to computational thinking. However, do not take this advantage for granted, as the lecturer knows how to set questions that can catch you off guard, especially if you are a self-taught programmer.

Lecture

The lecture went at a rather slow pace as the module is designed for students with or without prior programming background. The lectures tend to dive into the theory in-depth, which made it a little difficult for me to stay awake for them. The lecture notes provided were comprehensive enough and need no additional annotations, especially if you have prior background. However, the lectures are not webcasted and it is recommended that you attend the lectures in case you happen to have gaps in your knowledge. I have seen people going for lectures to just do the problem set assignments while listening to the lecture.

Tutorial

The tutorials are 2 hours every week. The tutorial questions are released early in the week, sometimes before the lecture, so you can do them early if you have prior experience in programming. The tutorial group that I was in had a good mix of strong and weak students and the tutor tried to keep everyone engaged for the lesson. Most tutorials end within 1 hour though, and the rest of the time is spent on catching up with the bi-weekly problem set assignments

The problem set is a set of approximately 30 coding assignments that you can do at home and submitted to CodeCrunch, which is an online platform for automatically grading those coding assignments. You will need to do 10 assignments before the deadline, inclusive of a compulsory assignment that the lecturer will pick. I strongly advice that you do all the assignments and pace yourself sufficiently so that you can do at least 1 assignment per day. This is especially useful for helping you to get used to computational thinking and also for your revision purposes.

Mid-term test

This was the first semester that the module had a mid-term test. Most of the questions involved tracing, which is to read the code of a program and determine the output. Many of the answers are very similar to one another, so it is easily to be caught off guard. 1 hour is definitely not enough for you to finish the paper, so there may be many instances that you will need to take some shortcuts in tracing the program. As a result, many did not do well (myself included) as the mock paper given to us had a different difficulty level than the actual.

There are also another 2 practical examinations that are 1 hour 30 minutes long and requires you to solve 2 long programming questions. You will be using a computer with no internet access except to CodeCrunch to write your code and to submit them. Many of my peers suffered in this component as the question can be very lengthy and difficult to determine what exactly needs to be solved. Hence, it is important that you plan carefully what are the different functions that you will need to write for your program during the first 10 minutes. You will also need to think of possible edge cases that your code will fail in, as you will not be given access to all the test cases that your program will be checked against.

Finals

The final examination is a 2 hour open-book test that involves tracing and writing of code on paper. If you have practiced sufficiently with your problem set assignments, you should be able to do relatively well for this segment. If you are not used to writing code on paper, try doing so for your tutorials instead of using the computer.

All types of programming methods that you have been taught will be tested. Usually, it is the basic OOP or recursion that will be very difficult and take up the bulk of your time for the test.

Other information

Assignment workload: There is only 1 tutorial per week, but many assignment questions in the 4 problem sets, which may take up quite a bit of your time per week depending on your strength in programming.

Project workload: No projects.

Readings: Very light. There is a recommended textbook but I only knew of it when I was writing this module review. Don’t bother wasting your money on that, the lecture notes are sufficient.

Recommended if: A compulsory module for all Information Systems students. If you are a computing student from another course or a non-computing student, there are other CS1010-equivalent modules that you are qualified for instead. This module is strictly from Information Systems students only.

Rating: 4.5/5. I love programming and the things taught in this module can sometimes be rather thought-provoking. However, who writes code on paper now?

Expected grade: A+

Actual grade: A+ (Okay, I was a little too confident for this module, but because this module is not graded on the bell curve, it is definitely possible if you put in consistent effort)

Last updated