Wednesday, November 5, 2014

CS1010 Programming Methodology


Module Description
This module introduces the fundamental concepts of problem solving by computing and programming using an imperative programming language. It is the first and foremost introductory course to computing.  It is also the first part of a three-part series on introductory programming and problem solving by computing, which also includes CS1020 and CS2010. Topics covered include problem solving by computing, writing pseudo-codes, basic problem formulation and problem solving, program development, coding, testing and debugging, fundamental programming constructs (variables, types, expressions, assignments, functions, control structures, etc.), fundamental data structures: arrays, strings and structures, simple file processing, and basic recursion.

Lecture Topics
The latest lecture updates are all here.

Tutorial Topics
All here as well

This module was my first ever encounter to programming but it is also my all-time favourite module. This is a core module for statistics majors to prepare us for programming in other languages and statistical softwares.
You will be using C programming language throughout the module.
The workload is heavy.

Workload
Three-hours lecture
Lectures were taught by Dr Zhou Lifeng. The lecturers changes almost(?) every semester so I'm not sure if this is still relevant to this module. However Dr Zhou teaches very well and replies to email quickly. He is also very patient and approachable so it was easy to ask him questions. I voted him as the best lecturer in the lecturer feedback.

One two-hours tutorial
Tutorials were held in the computer labs. Most of them were quite do-able, at least to me.

Supplementary 
Dr Zhou put up a hell lot of supplementary questions. You can access them here. He releases them bit by bit as the lecture progresses, so you might not see the full list at the start of the semester. There's really no obligation to do any of these.

Take-home lab assignments
There will be 1 trial lab that is ungraded. Subsequently there will be 5 more graded labs. Difficult is moderate(?).

Practical Exams
There were two practical test during my semester. They are quite do-able as well.. just got to think and type fast.

Lectures were not webcasted.

Assessment (AY11/12 Sem 2)
5% Take-home lab assignments
5% Discussion Session Attendance
10% + 25% 2 Practical Exams
15% Term Test
40% Final Exam

Final Exam is open-book. The lecturer will not be out to kill anyone with this paper. There will be easy questions but there will also be a few tougher ones to differentiate the students.

There is also no bell curve for this module. So you will get your A if you really deserve it. This is fair because everyone has different level of programming background.

Personal
Well I was hoping to get an A but i kinda of screwed up my midterms so I knew it wasn't possible anymore. I got like <50% of the total marks for mid terms for some reason. I think I got very high marks for both PE. I also left 1 question almost blank during finals due to the lack of time.

It is very important to have the right attitude for this module. Before I started this module, I was actually very afraid of programming and tried my best to avoid it. I had zero programming experience and I thought I was going to die in this module. But as you start to do more questions, you will slowly gain confidence and hopefully even more motivation due to the satisfaction felt after solving every question :)

I finished all the supplementary question (and I encourage you to do so as well) because those questions were really interesting and challenging. As long as you love problem solving and you are reasonably good at it, I think you will be fine. Keep up with the lecture and discussion too.

Extra notes to readers: I have lecture notes, tutorials, my own supplement questions codes, my own cheatsheets for exams. You can view them here (if they are still relevant) :)

No comments:

Post a Comment