Associate Professor
School of Computing

National University of Singapore

15 Computing Drive, COM2 Building, #03-20, S(117418)

Tel: (+65) 6516 4240 Fax: (+65) 6779 4580

Email: benleong at


Results of CS3217 (Semester 2, 2011/2012) Mid-term Survey + My Responses

The following are the results for the online survey that we did after the mid-term exam. I've also included some of my comments to the mid-term survey.

There are several reasons for this survey:

  • Timely Feedback - We cannot teach well unless we know what's going on and what students do not understand. Waiting till the end of the semester would be too late and there's nothing much that we can do. That said, I hope that students will appreciate that the lecturers are only human and it's not always possible to address all concerns and fix all problems this semester. In any case, the feedback will be taken seriously and future batches of students will benefit.

  • Allows Lecturer to Respond - This survey also presents the lecturers with a opportunity to address the concerns of the class and to clarify some issues from the perspective of the teaching staff, which is also why this particular page exists.

  • Reference for Future Batches - I am hoping that future batches of students will read this feedback before deciding whether or not to take CS3217. CS3217 is really not for everyone. It's really quite hardcore and meant for the most highly motivated to push themselves. CS3217 is not *just another* iOS programming course. 

Note: Feedback on the TAs are omitted here because of privacy reasons. I do not feel that it is right for me to put up the feedback they received on this site (not implying that they are bad.). They can choose to put up their feedback if they wish.  This is an anonymous survey. We have no idea who said what. We just know what was said. :-)

Total Number of Respondents : 27/27

Understanding Your Background

1) Essay

Why did you decide to take this module? Do you still it was the right decision?


1. I wanted to learn software engineering skills. Yes I learned a whole lot of stuff during this course.

2. i felt I needed more deliberate practice. not sure if its the right decision. I'll decide on that end of the semester because morale is pretty low at this point.

3. map over software engineering project...

4. i think it is considering software engineering project sounds really boring

5. I wanted to learn more about software engineering.

6. I would like to learn more about software engineering, involve in a practical project.
So far, it is right decision.

7. In order of importance:
To learn iOS programming.
UI programming.
To get used to high work load.
To do some real SE.

Probably still OK.

8. I wanted to learn about the techniques of software engineering, ios development and experience Prof. Ben's class. I made the right decision.

9. The lecturer is Prof Ben. Yes I do.

10. I like to challenge myself and I want to improve my programming skills as well. It was definitely the right choice, PSes were fun and I like learning things fast =)

11. It's because I want to push me forward to becoming a capable software engineer.

Yes. It was the right decision. I could have been better executed on my part though.

12. I wanted to learn more than what is offered by most regular courses since they do not have the rigour that cs3217 has. I do not regret taking cs3217 but I think my lifespan has shortened dramatically.

13. To learn iOS, meet great software engineering students and work alongside the best. The hardest part is to get started and this course has definitely help me in overcoming the barrier and spark my interest to self-explore iOS. And I am lucky to have work with some of the best students in my team:)

14. Just for kicks.

15. 1, want to learn more about SE,
2, want to build up some real software,
3, want to learn builind ios app,
4, want to learn more programming,
5, want to make imba friends,
6, want to kill free time

16. I took it because I was interested in writing apps and also, I heard that it is a very fun (and torturous) module to take.

Honestly, I thought of giving up and dropping the module when I was doing ps03 because I spent 5 days on it without any progress. But I decided to drop another module instead so that I can spend more time on CS3217. Thankfully, things are better now! 

So, yep I do not regret taking this module. The people in this class are cool! Nowhere else can I find a class with such dedication to a module.

17. It's never a wrong decision to take a module by Prof. Ben. I took this module to challenge myself.

18. I wanted to strength my software engineering skills and be trained in a tough technical environment.

19. Prof Ben teaches it. Of course.

20. Took the course to level up my programming skills and gain more experience building iOS apps. Yes, I still think it was the right decision, even at the expense of other modules :S

21. I want to do some interesting stuff with proficient people. I think my decision is right.

22. Yes, it was the right decision.
I took this course because I want to learn something useful, practical and interesting.

23. More software engineering exposure. Quite cool to pick-up objective c along the way.
I took the course to improve my software engineering and programming skills. It was definitely the right decision.

24. I took the course because I knew I will learn a lot from it. I had taken Scheme before and I loved it. I always love Prof Ben's courses.

25. To strengthen my software engineering skills. Yes.

26. I chose to take the course because I want to learn a new programming language (Objective C) and practise software engineering skill. Fortunately it was a right decision, even when it is a lot of pain >!<

27. Because I felt I needed to challenge myself so that my potential can be reached.

I ask this quesion to myself everyday. ;)

Skip: 0 (0%)

It is nice to see that again, we have a highly motivated group of students in CS3217 again this year. :-)


1) Multiple Choice

How do you find the lectures?



They are completely useless. I learn nothing.


I have no idea what's happening half the time


Lectures are no different from the other classes on campus


Lectures are clear and I am able to follow the material quite well


Lectures are way cool. Easily the best class that I've taken at NUS




Glad to see that 75% of the students think that the lectures are useful this year. While there is still room for the lectures to be improved, this represents a 12% improvement from last year. Good to see that we have done better in structuring the lectures this year compared to last year.

2) Multiple Response

How do you find the tutorials? 



They are completely useless.


They are not very helpful to my learning.


They're okay, but the time could be better spent discussing other things. 


They are typically useful. 


I learn everything in CS3217 from the tutorials!


No idea. I don't go for tutorials.




Seems like the response on tutorials is significantly better this year with almost 90% thinking that they are useful.

3) Essay

Suggest other topics that should have been covered for the lectures (if any).

1. More about code organisation and design.

2. It would be good to cover some of the project management model/technique!

3. Storyboarding is new but I think it would have been good to cover some important points about using it.

4. More warnings and precautions about the potential pit falls could be given.

I do agree on the philosophy of letting (forcing) us to pick up most of the stuffs on our own. But a lot of times, even some high level and very general guide lines are not harmful and could have saved a lot of time.

5. It would be cool if there are more lectures. 

Can spend time explaining the various methods we can use to avoid magic numbers. Objective-c allow us to set properties in the project files. Maybe a good place to store our constants. 

6. more Objective C language and tips lectures

7. More in-depth coverage for MVC pattern.

8. More design patterns?

9. I think that it would also be good if more code examples would be given, especially when teachng the design patterns (like delegate, etc.). This is because these things seem very logical in theory but I personally feel they are a bit more typical in practice (especially while implementing them the first time).

10. Data management

11. Maybe, more about design patterns.

Skip: 16 (59%)

We'd look into these suggestions next year. Some of the suggestions from last year were incorporated into this year's lectures and so I guess there are fewer "missing" topics.


4) Essay

Suggest other topics that should have been covered for the tutorials (if any).

1. The tutorial may cover more details on SE?

2. Optimization (maybe not suitable)
Black box & white box testing.

3. Concrete examples on software engineering.

4. More technical stuffs e.g. the algo of physics engine

5. Current tutorials are sufficient

6. existing frameworks in IOS


7. Same as lecture.

8. more about design patterns and ways to decompose a problem.

Skip: 19 (70.3%)

Thanks for the suggestions. We will look into them for the next offering. Optimization is unfortunately not a suitable topic for CS3217 I'm afraid. Neither do we really want to spend time on the algorithm for the physics engine. It is likely that none of the students are ever going to write a physics engine in their later lives. The point of the Physics Engine PS is really to test/practise your software engineering skills. It's a problem that's not *too* hard, but neither is it too trivial. Sure, it might be a little painful, but learning is often painful.

The teaching staff had a very long and involved discussion about whether to get rid of PS 4 and just have students use one of the available Physics engine libraries. After all, we were going to let the students use other libraries for PS 5. This would also reduce the overall workload. Two things: (a) we decided that it was valuable to retain PS 4 because we are optimizing for learning value and are not trying to minimize pain. We decided that learning value was more important than minimizing pain and the process of trying to understand a set of complicated equations in order to implement a physics engine was helpful for learning; (b) we also discussed whether to disallow the use of a third-party Physics Engine for PS 5. We decided against this because if we do so, the students would didn't do PS 4 right or very well would sort of be penalized twice. Also, we felt it would be helpful for students to learn about how a Physics Engine should be organized from looking at an open-source engine. Again, the consideration was maximization of learning value.


5) Essay

Feedback for Lecturer Ben Leong.

1. No other lecturers that I have met in NUS care so much for his students. Reading every single lines of code and challenging his students to do beyond what they think they can achieve. I would be curious to know what makes him so passionate.

2. I find it hard to understand the topics that I don't know before. Not much technical content is taken away from the lecture (except for life lessons). The concepts only get clearer as I struggle with the PS.

This probably has something to do with your talking speed. Please slow down a bit and give us time to digest. Not that we cannot understand what you are saying, but we don't have time to think about what you are saying.

Guest lectures are OK, and even quite good in my opinion, since we are hearing from people who experience it first-hand, and while they are still working on the product.

Tutorial are good because it discusses the pitfalls after we have gone through some practical experience. It is a good time spent.

3. Good job

4. Too handsome

5. The course was very well planned. 

6. Prof Ben never disappoint his students.

7. It's Prof. Prof is awesome.

8. Well, he is awesome as always. I have been scolded by him countless times, but deep down I know that it will do me good and I do hope that he too doesn't think very badly of me. I have never been so frank to any lecturer other than him and I don't think I ever will be. I will miss him a lot and I pray he comes back to teach CS3216. From the next sem, I will miss him a lot. I consider him equal to my father in this home away from home. I consider myself fortunate to have known him.

9. Still a cool lecturer :)

10. Responsible, dedicated and motivated. He identifies 'lobangs' and helps his students by linking them up with external parties for their project. Very thankful for that!

11. It have been a great experience learning from you.

12. Best lecturer in NUS.

13. Concepts are well explained. Instructions are clear.

14. Best lecturer ever. I never absent a single lecture for CS3217.

15. No comment.

16. Prof Ben is really good and motivating. I like his way of informal lectures.

17. Have a really good "common sense".

18. Talk slower.

19. awesome =) What else can i say ^^

20. Engaging and passionate.

21. Great!

22. ok... since no one is perfect. sometimes a bit harsh to students.

Skip: 5 (18.5%)

Thanks for the kind words. A bit of scolding never killed anyone... I think. OK, will try to be a bit kinder to the students.

Problem Sets
1) Multiple Choice

Do you think the problem sets were designed well to meet your learning needs?



Complete waste of time, I learnt nothing.


There was little to be learnt


I learnt some stuff, but not a lot


I learnt quite a lot


I learnt more in CS3217 than all my other classes put together.




Happy to note that 96% of the students learnt quite a lot from the problem sets. This represents an improvement from the 85% we had last year. Seems like we really did fix most of the bugs in the problem sets this year.

2) Multiple Choice

How would you assess the difficulty of the problem sets?



They were too easy


They were not much of a challenge


Average, just like my other classes


They were challenging


I almost wanted to commit suicide




It seems that the distribution on the students' perception of difficulty is similar to last year. Since we are using the same (but improved) problem sets, I guess it's not entirely too surprising.

3) Multiple Choice

How much time per week do you estimate that you spent on CS3217?



At most 15 hours.


Between 15 and 25 hours.


Between 25 and 35 hours.


Between 35 and 45 hours.


Between 45 and 55 hours.


More than 55 hours.




Hard to believe, but the distribution of time spent this year is lower. I suspect that this is because we're ironed out all the major bugs in the problem sets.

3) Essay

Did you find the feedback write-ups that you received after grading to be useful? If so, why? If not, why?

1. yes it was useful.
it can help me to summary the procedure of doing an assignment, 
and it also provide feedback to teaching staffs about the assignment.

2. Yes, very useful. It's more important for us to learn where we did wrongly than to simply obtain a grade.

3. The feedback that I received was mostly about coding style. So they were useful.

4. Yes, they pointed out a lot of errors that I never noticed.

5. Yeah though haven't had time to read them too closely.

6. Yes. But sometimes it's quite hard to illustrate a point just by comments or write-ups. Maybe a few good example could have been given to learn the good practice, since we have so many good coder among us.

7. The feedback that involves mark deduction are generally clear to understand and useful. However, i think it would be good if the tutors commented more on the codes that aren't directly involved in the grading. Like why do the tutor feel that our codes are good and where can we improve on etc. or which part of the code is hard to read. Any minor suggestion of improvements would be cool too even if its just one small portion of the code. 

8. Yes. I know which part I can improve directly from my code, which is very helpful.

9. yep. good to know where i can do better.

10. Ok but I don't really read the feedback...

11. Yes definitely! I can finally see what are my bad habits.

12. Yes, they showed me where I could improve in terms of the way I code and engineer software.

13. Not really. The structure

14. quite useful

15. In general, the feedback write-ups are useful, but it would be better if the comment/feedbacks provide more information (links/articles) to help students correct their mistakes better.

16. Yes, they were useful. I could understand exactly what I have done wrong and what i need to improve on.

17. Ya, very useful. I liked the fact that I received in-line code comments for first 4 PSes. That was awesomely helpful. In PS 5 though, I was a bit disappointed since comments in grading.txt don't help as much as in-line comments.

18. It makes me know what to improve in the following PS. But I did not have time to discuss with TA in detail ;-( too bad.

19. yup, very =) I can learn the goods as well as the bad and peer learning is also very effective in these cases.

20. Not much

21. I not sure if my code is OK or because my grader is lenient. My mark rarely gets deducted because of coding style.

22. It's somewhat useful but not much. Reading the feedback didn't really help me improve as much as reading the in-code comments.

23. Yes, the feedback is really useful and with reflection, it has helped me in improving the code I write.

24. Definitely. They actually tell me where I'm wrong.

Skip: 3 (11.1%)

Glad to see that most students think they got useful feedback on their assignments. Kudos to TA Mengran and the tutors. Re: comments 17 and 22, this feedback that I'm referring to consists of BOTH the comments in the grading report and also the inlined comments.

Students should try to make sure that they read the feedback from the TA or graders so as not to repeat the same mistakes.

4) Essay

What are your views on the problem sets in general?

1. challenging..

2. The timing is much better this time.

3. Problem sets are well structured with high learning curves.

4. very good

5. It is really cool, but really time consuming

6. I think they were quite well designed and fun to solve. Especially the last one.

7. Challenging, tedious and time consuming. But fun and rewarding! Forces me to learn on my own which stretched me to my limits.

8. The instruction in the PS is too long-winded.

PS4 is not very useful as a design practice.

9. They are pretty fun and interesting and generally manageable though not advisable to the people who are busy with other stuff xp

10. Very well done. However, I feel that emphasis on testing is still not enough.

11. They're challenging and can provide good learning experience. But personally, I didn't find them very fun and cool to work on. That's why I wasn't very motivated to do the PSes very well.

12. Tough.

13. I love it. But since I'm more of a utility guy, I would wish that the 5 problem sets will help us create a Path app:) That would be cool. Just my personal view.

14. Good and challenging.

15. Challenging. Lots of icing to test of ability to solve problems.

16. They are cool problem sets and is a good software engineering practice.

17. Very well planned. Good amount of information, not too much not too little.

18. They were difficult, but excellent in teaching software engineering and iOS programming.

19. Too much sleep has been lost over these Problem Sets

20. The problem sets are quite interesting in comparison to other software engineering assignment, while provide enough suffer time for student to gain knowledge from the problem sets.

21. problem sets are good

22. I think they are great. Hats off. Learnt a lot.

23. The first problem set is too easy. The gap between 2nd and 3rd is too big.

24. Rather abrupt. Most of the PSes were based on reading stuff up myself or asking around. But I guess that's the aim of it right? Since we needed to learn stuff by ourselves.

25. hmmm. It's hard to say.
I think it's hard to find a balance between letting us learn on our own and spending too much time on unnecessary pit falls.
I you put too many guide lines, it becomes normal tutorials. Yet, less instructions means more struggle, which may or may not indicate good learning experience>.<

Skip: 2 (7.4%)

I am glad to see that the problem sets are general well-received either though they are kind of tough.

To respond to Comment 8, it's hard to find a problem that's somewhat big so that the students have a chance to get some design practice and yet not be too big that there's too much work for the semester. We have already tried to find a middle ground in the Physics engine.

I agree with Comment 10 that there's not enough focus on testing. Agreed that we should look into how to increase the testing component and/or see how we can introduce some TDD (Test-Driven Development).

5) Essay

Please let us have your suggestions on how the problem sets can be improved to make learning more efficient.  

1. Compile a self help booklet to collect all the pitfalls from previous students or tutors? So that for more competent student they won't need to look at it. But for those who are struggling, this could be a live saver.

2. Maybe can move some more from PS 3, 4 and 5 to PS1 and 2.

3. PS4 might be changed?

4. Nothing beyond what is already noted in the problem sets.

5. Its cool.

6. Perhaps PS5 should start after finishing grading PS4 so I can have more time fixing my physics engine.

7. Please fix the late penalty marking scheme.
It makes students very very unmotivated for the future pSes and even the project.

8. Maybe get PS4 less problematic.

9. Provide *a little* more guidelines please!

10. Fix some of the typos and errors.

11. Increase the weightage of the testing component.

12. I think PS4 can have other stuff added to it. The appendix was very accurate and there weren't much trouble going through it.

13. Push a few things from PS3 to PS2 to let us get used to programming the interface.

14. If the problem set did not provide assets, the game made by us would more variety since the constraints are less. Also, we would be forced to learn how to get and maintain assets, which will be useful in final project.

15. Same problems as usual from last year. Maybe check if things are alright or the organisation flow is still the same.

16. Even though I think the PSes are not very fun, I really appreciate them. They're the best PSes I've done in NUS.

17. I think PS1 and PS2 can be put together

18. Highlight common pitfalls in problem sets to ensure that students focuses more time on it.

19. none.

20. Instructions can sometimes be a bit ambiguous or have some typos.

21. They are awesome as it is.

22. Maybe a short solution for some parts of the problem sets can be good, maybe it will help reduce the pain in the ultimate problem set 5 where there is the integration of buggy PS3 and buggy PS4 is a real painful time (for me this was because of the design in PS3 and PS4 was not good and the feedbacks for PS4 arrived to late so I have too little time to correct).

Skip: 5 (18.5%)

I think the suggestion to collect pitfalls from previous students is a good one. It turns out that only a small number of students camped in PL1 this year. Last year, there was massive camping and so there was a lot of communication between the students to share pitfalls. I think that really helped. This year, we have a lot more lone ranger types who do their own thing.

To respond to Comment 7, there is nothing to fix. We aren't even supposed to have late submissions to begin with. There was no late submission penalty scheme last year because there was very few late submissions and even if there were, they were like a couple of hours or one day late. The number and degree of late submissions this year was quite surprising given our experience from last year. Hopefully, in future classes of CS3217, there shouldn't be much late submissions and so effectively, a late submission policy shouldn't be necessary.

To respond to Comment 14, the suggestion of not giving assets is not practical. We really don't want students to be wasting time running around looking for assets. I think the class already has enough work. Students are welcome to use their own assets for PS 5. I think this is stated in the Problem Set.

To respond to Comment 15, definitely not. The problem sets last year was quite a disaster and the teaching stuff was running around like headless chickens trying to resolve the problems that come up. In contrast, we hardly had to do anything this year about the problem sets and there were only a minimal number of typos. Overall, I am quite pleased with the Problem Sets.  Kudos to the TA and Tutors for fixing most of the bugs from last year. Most of the issues were due to Apple-side changes that blindsided us.


1) Multiple Choice

What is your overall impression of CS3217 thus far?



This is a horrible module. I truly regret choosing it.


It's alright, but mostly painful.


Just like any other module.


It's a good module and I definitely enjoy it. 


CS3217 rocks! Coolest module I have taken in my life. 




It is interesting to note that the distribution on this question is similar to last year. Basically, there's about 1/4 of the students who regret taking the class and 75% who think they chose to take CS3217 correctly. I hope that things will get better for the 7 students who are suffering more than they'd like between now and the end of the Semester.  

2) Essay

What do you think you have learnt thus far?

1. Software engineering principles and iOS programming.

2. The ability to pick things up on my own. I realise the fastest way for me to learn is by doing it.

3. How to code properly, interact with groupmates, independent learning.

4. I've learnt so much. Time and people management are among some of the stuff that i learnt along the way. I loved the way we learn something new and picking up new stuff on the fly =)
But I guess the most important lessons I've learnt is to teach myself *fast* and to prioritise and plan carefully if you have too many things to  do.

5. Design is important if not the most important part of software engineering.
I am not good at the moment and I need to improve.
Start things earlier if I don't want to stay up the whole night later.

6. I have learned to think more about the structure of the code I am writing and how to write good code.

7. X-Code, Objective-C, github, (a lot of ?) physics, coding standard, MVC
Do not write duplicated code. Torture myself in a happy way.

8. Obj C.
Using open source physics engine.

Dealing with depression.

9. I learn not to treat CS3217 like its something completely new. I bit myself when I realised the stuff I do is similar to the thought process I've been using for other projects as well. I threw it all away because I wanted to learn something new or clean out my rubbish processes that I was afraid of having in case it screwed up with my thinking.

10. xcode programming

11. That the human limits can be stretched and challenged greatly, haha. I actually enjoyed the time when I was sleeping at 11am and waking up at 6pm, and work through the night till the next morning. Quite fun.

12. iOS programming
UI programming
Practice SE in project

13. lots about software engineering

14. I've learned how to design good software systems and value testing.

15. I have learnt software engineering skills, especially by getting feedback on my style and design.

16. AF and RI is cool. Software engineering is not easy. It is easy to say we want low coupling and high cohesion, but difficult to achieve in reality. Have to constantly think about what are the repercussion of our coding structures.

17. Basic concepts regarding software engineering, for example, abstraction, mutable/immutable data types. I also learnt software design patterns such as observers and delegates. But it is only through the problem sets that I understood such concepts.

18. - The importance of testing (the pain of not testing before coding)
- Software engineering theory and practice.
- Objective C
- The troublesome provisioning/certificate of Apple.

19. Everything. I have learnt a lot of software engineering and I don't think I need to list that. But apart from that, I learnt this -
1. Patience - Debugging for hours taught me that.
2. Work with 39 degrees Celsius fever - This was horrible. REALLY HORRIBLE. But I have come out stronger.
3. handle frustration - I was really pissed off with the PL1 timings. They didn't have timetable for first half of midterm. Secondly, they schedule practicals till 8pm some days. I used to leave my evening classes, then come and find the lab busy. I think I did suffer because I didn't have a Mac. Travelling to SoC when I had high fever was almost unbearable.

20. Lots of things about software engineering. Lots of practical things =D
Design patterns.
Self-motivated iOS graphics programming.

21. How to create better software, from how to plan better to how to code better.

22. MVC and other design patterns.
How to design and build something that's relatively large.
Do testing.

23. Quite a bit of things but mostly debugging.

24. Life is hard

25. basic ios programming.
software engineering principles.
sleep is optional.

Skip: 2 (7.4%)

Looks good. Looks like the students are learning what they are meant to learn. Sorry about the PL1 availability. Unfortunately, PL1 is really a common and valuable resource and classes sometimes need to use it during office hours.

3) Essay

Please share one thing you love most from this class

1. Learning stuffs all the time.

2. Writing code.

3. The difficulty level! =)

4. Free food

5. The McDonald's!

6. Prof Ben, my team mates, the Facebook group.

7. The rigour of the module

8. It keeps me busy.

9. The people in this class are fun to interact with!

10. high calibre of classmates

11. The environment of crazy ass students.

12. Generally, I like the challenges presented by the problem sets as it helps us to learn stuff.

13. The guest lectures are interesting.

14. I love the fast pace and the rate we pick up new stuff =)

15. The friends in this class are awesome!

16. Can code something that works.

17. The PS5 is the most painful problem set but also most fun.

18. I love the in-line code comments whch tutors give for grading.

19. Watching your own code work (especially for PS04) can sometimes be really rewarding and gratifying. That is the reason why I chose to be an engineer :)

20. Having tutors reading every line of codes.

21. At the end of the problem sets, we actually have a working game to play with.

22. awesome classmates

23. It forced me to learn a lot new things and learn by myself.

24. The guest speakers are a good additional to this module

25. Ben Leong, the best lecturer!!!

Skip: 2 (7.4%)

Like last year, it seems that the students appreciated (i) free food; (ii) challenge/learning; and (iii) cool, talented and motivated classmates. What's different this year is that we also had some really cool guest lectures by former students, which some students apparently appreciated too.

4) Essay

Please share one thing you hate most from this class.

1. The time table is really bad!

2. Too many reports to write...  :(

3. Testing :p

4. Xcode is a horrendous IDE.

5. 3 hours of lecture a bit too much

6. I hate PL 1. I do think that this was unfair to those who don't have a Mac, especially because since I haven't been well this semester for reasons I won't disclose here, I had a very hard time. Please improve this for the next time CS3217 is taught.

7. I write too many bugs.


9. I was forced to learn a lot things by myself and do have time for other modules.

10. stay up in the night to rush the PSs because I had not planned well.

11. No sleep

12. The tight deadlines. =(

13. tutorial falls on my free day haha

14. Debugging the physics engine because I had no idea what I was implementing and whether they were correct.

15. sleepless nights >"< but finally now I already got used to it :D

16. The knowledge that my grade will not be proportional to the amount of time I spent on the module

17. Sleepless night.

18. work hours.. haha

19. having 1 hour on thur and 2 hour on fri for lectures. Should put everything on one day, 3 hour slot. Perhaps even have the tutorials on the same day.

20. Spending a lot of time doing researching and coding (it's cool but suffering).

Skip: 7 (25.9%)

The schedule was supposed to be lectures on Tues and Thurs, not Thurs and Friday.

I am really quite sympathetic to Comment 16, but like I explained at the beginning of the class, the final grade is a reflection of the demonstrated competence of the student and not a reflection of time/effort spent. It turns out that in fact, for software engineering, the grade is often inversely proportional since the better engineers write better code and are much faster in debugging. Sadly, the transcript should be honest in reflecting the relative accomplishments of each student. That said, to me, what really matters is learning. A student might be a B student today. It doesn't mean that he/she cannot become an A student with more practice. I make no apologies for what is a reality of life. What I will however endeavour to do however is to provide as accurately as possible a reflection of the final level of competence for each student in the final grade. In other words, if a student do not do very well for the Problem Sets but demonstrates beyond reasonable doubt that he/she has reached a high level of technical competence in the Final Project, some of the earlier sins can be forgiven.

5) Multiple Choice

Would you recommend the module to anyone else?



No, I wonít want them to suffer the pain I did.


Nah, I donít think itís worth it.


I have no opinion about this.


Yes, I will encourage anyone who asks me.


Of course, every NUS student should take this class!




I guess the response to this question corresponds to that for Question 1 above. 7 students are suffering and these either won't recommend CS3217 or have no opinion. The remaining 20 students are generally happy with the course, in spite of the suffering.

6) Essay

Please give us your comments and suggestions on how to make your learning in CS3217 more efficient and interesting.

1. More content about software engineering. Not the drawing diagrams part. The coding organisation part.


3. Shorten the PSes and introduce a small project

4. Its good the way it is!

5. Same answer as 21. PL1 ISSUE PLEASE PLEASE PLEASE.

6. We can have a longer tutorial.

7. I would love to have a compiled resource like a booklet, a couple of web site links or blogs to turn for help.

8. It's the most efficient and interesting course in NUS already.

9. cannot think of more.

10. If we can have timely feed back on previous PSes, then it'd be great. For e.g. I got my PS1 feed back close towards the end of PS2 and PS4 feedback close to the end of PS5, though I know tutors also need time to grade, a general feedback will be good first so we know what to look out for in the next PS we do.

Perhaps timing of proposals and pitching can not fall together with PS 5 ><

11. I find that it is not that relevant for us to code such a complicated Physics Engine to learn the implementation of Physics Engines. We spent a lot of time debugging the formulas and stuff.
I think the same outcome can be achieved even if the shapes were changed to circles, which reduces the difficulty of the problem set yet still achieving the learning outcome. 
Regarding the implementation of rectangles, perhaps it can be given as a bonus in ps04? Since many people used an open source physics engine for ps05 anyways.

12. Manage my time more wisely.

13. I know it is quite difficult but it would be good to bring in more guest lecturers.

14. The lectures about Objective C are quite dry (somehow redundant). In my opinion, students can learn about these programming language thing at home. In lecture, it's better to give more examples (demos maybe) to support some hard to understand topic like MVC (I suffered from this topic)...

15. Don't know

16. Provide more information with regards to the problems in Xcode, so less time is wasted on making it work.

17. Teach more technical stuffs related to objective-c.

Skip: 10 (37%)

To respond to Comment 5, there is really nothing that we can do about PL1. PL1 is required for use by other classes during office hours. It is available for CS3217 students to do their homework after office hours. It was the same last year. It will be the same moving forward. It is not feasible for the school to issue each student a MacBook.

To respond to Comment 10, we have already done our best to grade and return the PS's ASAP. The problem sets are very nasty to grade and moderating them to make sure that no TA/Tutor is too strict and/or too lenient is already a big headache. In any case, this year has already improved much already since you can see the tutors committing their grading remarks to GitHub as they go along and you don't actually have to wait for the grading to be completed to see their comments.

To respond to Comment 11, we disagree. Part of software engineering is learning how to code with minimal bugs. Many students have done PS4 just fine. If you have a lot of trouble debugging, that's an indication that your programming/debugging skills are still not quite there yet and the additional practice is good for you. Reducing the problem to circles will make PS 4 completely trivial. We actually considered not letting students use a 3rd party physics engine. We decided against it to make sure that the weaker students don't die. Makes sense? Basically if you have a lot of trouble with PS 4, you should be working harder instead of complaining. PS 4 is meant FOR YOU. >:-)

7) Essay

Any final words about CS3217? This is your chance to tell us anything you want that is not already covered by the previous questions.

1. Try pair programming

2. At this stage I just hope I pass this module.

3. Great module!

4. CS3217 is really a cool module and I enjoy the process of building stuff with many proficient people.

5. CS3217 is actually a module that stands the greatest chance of encouraging students to pursue entrepreneurship and work on problems that they are passionate about. CS students rocks!

6. for problem 22 choice E
if "every" NUS student take this class, most of them will die.

7.Since I have been told this is not for everyone and not meant to be easy at the very beginning, for a lot of challenges I am not sure whether they are intentional or not. 
Anyway, It is hard to balance between challenge+space to explore and guide lines+easier learning experience.

8. Nah.

9. The tutors are awesome!

10. This module rocks, please continue having this module and torture more students. It will benefit them ultimately haha. This module is also gaining fame for being a challenging, tough yet rewarding module in NUS. Even people from Faculty of Engineering know about this module. Should keep it this way! (:

11. Hope the class can produce more success stories like HuntVille.

12. Maybe can consider using Android platform for future CS3217 modules!

13. Thanks Prof for starting this module for SoC! (:

14. Worth it but much sleep has been lost. Could be more lenient during break periods since students are expected to code during CNY AND midterm break in order to make the deadlines

15. The module brought me through many different emotions. The joy of learning and coding and finishing things. The pain of integration and when facing mysterious bugs. The regret of couldn't deliver bug-free PSes. It's a whole new experience compared to CS2103 - much harder but much more interesting. Best module in NUS so far.
16. Thanks for enrolling me into this module. The rest is history. Thanks Prof Ben for these 13 weeks.

17. CS3217 is a good module and it should be continued! Hopefully, there will be a lecturer taking over the module when Ben goes on leave.

Skip: 10 (37%)

Excellent suggestion on pair programming. It was actually an idea I thought about but didn't really know how to implement effectively. Actually, there is nothing stopping you guys from pairing for the Final Project. Pair programming doesn't work for the PS's because the goal of the PS's is to build up individual competencies and to allow us to better assess the ability of each individual student.

To respond to Comment 15, I am glad that CS3217 is a "whole new experience compared to CS2103". Otherwise, we'd all be wasting time. :-P

Last updated $Date: 2015/02/26 13:12:27 $