| |
Results of CS3217 (Semester 2, 2010/2011) 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 : 39/40
1)
Essay
Why did you decide to take this module? Do
you still it was the right decision?
|
1. I decided to take this module because I wanted to step out of my
comfort zone, to give myself a challenge in order to bump up my
programming skills. I felt that this module will be a good way to really
level up my software engineering skills, in terms of concepts,
self-motivation and determination. To be honest, I am regretting quite a
little. It might be problems with my own time management, but spending
the whole recess week in the programming lab every day and night,
without time for other modules, is.. well. And I'm not alone. |
2.
I take this module to step beyond my comfort zone, so after all I could
be come a better learner. This is also a chance for me to explore more
about software engineering. Until now, I feel this module is really
tough yet informative :), because of this I feel that my decision is
right. I know more about myself, my ability and my interest, which helps
me much in choosing the right direction. |
3.
I decided to take this module as it is challenging. I still think it was
the right decision. |
4.
Just for fun, and for the iPad. iPad & iOs was (is) hot too. And I
enjoyed it quite a lot. |
5.
I took this module on prof's reassurance that it could act as a
replacement for CS3215, which I did not wish to take as it was very
restrictive. I hope it was the right decision, and that I do not have to
take CS3215 again after. |
6.
To learn more about good practises of software engineering, the correct
way of organising complex code and how to test code in order to build
robust and stable systems. I still think it was the right decision. |
7.
Mainly to improve my SE skill. I guess it's better now. So yes. |
8.
I took it to learn more software engineering. |
9. I take this module because I heard that it is about SE and based on
iPad platform. I like to design and develop software, and I love Apple
brand. I think it will be very useful to pick up such an experience for
future career. Honestly, I used to regret when I suffered the most
during ps assignments. Because the workload is quite unbelievable that
it took every minute of my life. But I pull it through the first half
semester and now I'm just glad that I never give it up. Ben's word
always echo in my mind, "what doesn't kill it makes you stronger". I've
learned a lot from this module. |
10.
Get to use free iPad for one semester which is enticing. - Get to learn
how to program on one of the hottest mobile OS which is a very practical
skill. - Prestige of the module. - Take up harder programming modules to
train myself up. |
11.
to learn new stuff. Yes, but the workload is crazy, and because of the
time spent in this module, it is badly affecting all my other 4 modules. |
12.
My friends recommended me. I also wanted to learn about new platform,
new language and improve my Software Engineering skills. I new feel
regretted taking this module. |
13.
The module was pitched as a class on software engineering principles and
an opportunity to apply them to a modern system with real world
applicability. That is why I took the class and was not disappointed. |
14.
I decided to take this module because I want to learn sth useful and
practical. I still think I did a right decision although I have almost
trashed all my other modules for CS3217 : P |
15.
I decide to learn this module because I want to enhance my programming
skill. Now i think it is 60% right decision. I really got a chance to
practice my programming skill but the improvement may be less than what
I have expected. |
16.
Wanted to try picking up a new platform and learn software engineering
along the way and challenge myself. I think it was the right decision. |
17.
Learn and apply software engineering techniques. |
18.
CS3217 appears to be a very challenging module and it looks fun. Yes, I
still think it was the right decision. |
19.
I want to have some pain =) and some fun :)) But it's like too much pain
vs not as much fun =) Still, I think it's a right decision. |
20.
I decided to take the course because I wanted to learn design principles
and challenge myself with difficult problems |
21.
Wish to challenge myself before I leave NUS. Yes, I think I have really
pushed myself over my limit. If only I have this attitude 3 years back,
I will be graduating in First Class Honors. |
22.
To improve my coding. A fun module with cool iPad. Yes right decision.
Polished me more. |
23.
I took this module because I love programming and wanted to strengthen
it more and more, as well as learning various lessons from prof Ben.
That was a right decision after all. The workload was quite heavy, but
from that, I learnt great deal about programming and software
engineering. All the people in the class are cool as well. They are
different from most classes I have attended. They are passionate and are
willing to spend a lot of time doing problem set (or suffering pains)
because they love programming. |
24.
To help me push my boundaries, while learning something useful. I
consider it as one of the better decisions I've made. |
25.
The main reason why I decided to take this module is that I would like
to try something new. As a programmer, I would like to improve my coding
skill by doing challenging tasks. As a young person, I would like to
know find out the way to get closer to my dream and goal. Yes. It's
still a right decision. Although I did suffer a lot, I learnt a lot as
well. Not only about coding, but also about dealing with problems,
challenges, and even failures. |
26. To learn software engineering by doing it intensively. Yes, it's a
right decision. |
27.
I took it to gain a greater exposure towards software engineering. I
think its still the right decision as it made me see that learning,
picking up a new language was not the point. the whole point is in the
design and teamwork that was used to complete the problem set. |
28.
Sounded interesting + Like the focus on problem solving. Yes. |
29.
learn software engineering (standards, programming patterns/styles),
work with great people to do random things (final proj) I think i had
made a correct decision. |
30.
Hand itchy. |
31.
To challenge myself and have fun. Yes, sort of :p |
32.
wanted to test myself vigorously in terms of programming. |
33. Because it is interesting and looks challenging. And I wanted to
know more about software engineering. Yes. |
34. To learn more about more device programming, and to meet enthu
people =) And, yes it is |
35. This is module makes more sense than any other in the degree
requirements and I did not join SoC to spend nearly all my time at
Science and FASS. Software engineering is the only reason why I'm in
school and this module is a must to take whether it is required. Yes. If
all modules were like this one (perhaps with lighter workload), then my
Uni life would have been exactly what I dreamt of. |
36. Interesting alternative to CS3215, and many peers are reading it as
well. As of now, still yes. |
37. I feel that there is a huge potential in IOS power device in mobile
computing. This is something I am interested in. Taking this module is
one of the best decision i made this sem. |
38. I decided to take this module right when I heard prof Ben talk about
it. This was because I had never challenged myself as of now and I
needed this module to show myself that it was possible for me to achieve
much more than I thought would be possible in one sem. I think my
decision was right... Even though the first few assignments I had to
struggle through, I managed to complete the last few ones
satisfactorily. |
Skip:
1
(2.5%) |
It is nice to see that
we have a class of highly motivated software engineers.
|
|
1)
Multiple Choice
How do you find the lectures? |
Response |
Percentage |
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 |
|
Skip |
0
(0%) |
The lectures were really not quite as good as I would have
liked them to be. Basically, I was too busy working with the TAs on developing
the problem sets and also grading problem sets to spend sufficient time
preparing the lectures well. The lectures should be much better in the next
offering of CS3217.
2)
Multiple Response
How do you find the
tutorials? |
Response |
Percentage |
They are completely useless. |
0
(0%) |
They are not very helpful to my learning. |
0
(0%) |
They're okay, but the time could be better spent
discussing other things. |
10
(25.6%) |
They are typically useful. |
30
(76.9%) |
I learn everything in CS3217 from the tutorials! |
3
(7.6%) |
No idea. I don't go for tutorials. |
0
(0.0%) |
Skip |
0
(0.0%) |
Hmm. We're not doing so good. Need to figure
out how to improve the quality of the tutorials next year.
3)
Essay
Suggest other topics
that should have been covered for the lectures (if any). |
1. Physics engine |
2. I think the topics covered are enough. A bit too much, actually =).
The problem is we hardly have any time to prepare for the lecture
(hardly anytime for anything =)), so I "have no idea what's happening
half the time :D". I understand many concepts in the lectures later,
when doing the stuffs myself :). |
3. 1) some examples about the design patterns 2) a clear guideline about
how to draw domain diagram 3) information about delegates &
communications etc 4) how to write proper unit test / how to test a
UI-based program (yep, it may not be practical) |
4. MDDs and other diagrams.. Because it is required for almost every
problem set, but it is not clearly taught in lecture and there is not
any good reference or explanation on this available. Can introduce more
on the incentives behind those design patterns as well. I feel the focus
is more on "reaching the limit, changing the world" than on software
engineering. After all this is still a software engineering course :p |
5. Concrete examples on design, sample codes, diagrams. Everything is
very, very, very abstract to actually let us absorb the core stuff.
Maybe there isn't time, but I thought examples from CS1101S were really
good. I didn't really understand MVC from lectures.. |
6. More design patterns and how they are implemented in
the context of Apple gunk. |
7. More example code. That is not trivial. Hard to
understand high level concepts with trivial code. Or you could simply
ask us to watch stanford stanford lectures and focus ONLY on software
design. |
8. More on design patterns and real-world examples on how to use them. |
9. Case studies of real world software systems. |
10. More on design patterns. |
11. Lots of designs, Case study on problems and how they were solved.
High level lectures on design. |
12. NSNotifications Key Value Coding The above two things are part of
MVC. Although you are trying to teach general stuff, these 2 things are
very useful for PS. |
13. OCUnit testing and Automated testing framework. |
14. More about objective C and iOS |
15. More on concurrence when working with threads. Some guides about
working with MacOS and XCode would be very helpful, i think. |
16.
Quality Test |
Skip:
23
(59%) |
As mentioned above, we will review both the content and the
delivery of the lectures in the next offering.
4)
Essay
Suggest other topics
that should have been covered for the tutorials (if any). |
1. The tutorials should cover more topics on SE, or more time should be
allocated for tutorial so that there will be time left for discussion of
other topics after the discussion of the problem sets are over. |
2. OCUnit testing and Automated testing framework. |
3. For my tutor, Marian, I think he's quite good, but it's just that he
might encounter some problems in speaking, so unfortunate that it
degrades the quality of the tutorials a bit. But anyway, the discussion
was really interesting, useful, and helpful. |
4. Model implementation of teaching staff. Different implementations of
students were discussed to see advantages and disadvantages of each
implementation, but the implementation of teaching staff was not
discussed. If possible, I want to see the 'model' implementation of the
teaching staff, the approach so that I can understand more (good) points
of view in implementation. |
5. Tutorials are fine. |
6. Introduce some good objective-c project structure. |
7. Similar to above. Maybe take-home assignments on
objective c crash course (probably ungraded) - useful stuff like..
GUI-specific (UITableView, UIAlertView) or maybe actually some
introduction to data persistence (before PS3!).. But of course I
understand this module is not objective c. |
8. More specific examples of how the whole system can be designed. For
example, showing some sample designs just by showing the headers file of
each class that is created would be been much clearer and useful. |
9. sample module from the tutor? |
10. More discussion so on design on systems would be great |
11. More discussion on the (current) problem set. - Encourage students
to share about the progress (or the experience) so far. |
12. Q&A sessions like they are today are quite good. |
Skip:
27
(69.2%) |
Thanks for the suggestions. We will look into them for the
next offering.
5)
Essay
Feedback for Lecturer
Ben Leong. |
1.
Very good prof.Love your free Mc Donald |
2.
Great. But better in other modules. Obvious that this is the first year
the module is carried out and that he's figuring things out with us too.
Should spend a little more time learning Obj C :P |
3. I
think Ben is a very passionate professor. He pursues for high efficiency
in the lecture and teaches a lot of things. |
4. You
are as cool as me. |
5. Maybe
a bit of research on usual practices (e.g. MVC, orientation detection) |
6.
Cool :) I like the way you conduct
lectures. |
7.
underestimates the time we need to
spend on the problem sets |
8.
Sometime prof did not make the topic clear enough, esp. when he
mentioned a hard topic and there are no code examples TT. And prof also
should mastered Obj C :), because although we can all learned everything
if we want too, like prof mentioned :D, sometime if he admitted that he
is not clear about something (which happens for quite sometime :)), it
makes what we heard sounds a lot more suspicious :). |
9. Good! |
10.
Maybe..... speak less, teach more. |
11. One
word: Inspiring |
12. He's
always believe in what he's doing. And he cares from students, I rarely
know any lecturer who remembers the whole class' names. |
13.
Great work :) keep it up! Maybe you could talk a bit slow so it would be
easy for poor Indian souls not used to the Singaporean speed ;) |
14. I
think that he is the best. Can't think of any suggestions. Good
interaction with students and evil but encouraging lecturer. |
15. I
don't know how you organize the TAs, but they're doing great. |
16.
Nice emphasis on the core principles of Software engineering and for
organizing the pitching sessions. Great idea! |
17.
Inspiring and caring prof, as usual. His lectures are all good and of
high qualities. Lectures are fun, most parts are easy to follow and
understand, thus the learning experience and value are high. Evil
(tiger), but very inspiring prof, that everyone is willing to
suffer/endure the pains of this module and work very hard. Very
dedicated prof as well - grading the problem sets over the Chinese New
Year. By far the best prof in NUS I have ever learnt from :-). |
18.
Overall good. But I do believe Prof Ben is able to teach more on
software engineering, it could be good if he offers some concrete
examples - common pitfalls etc. |
19.
An inspired lecturer. I hope that sometimes you could slow down a bit,
since my English is not very good :) |
20.
Prof Ben did give us good lectures as usual. |
21. Generally clear and I have no difficulty following his explanations.
Always ready to answer to any student's question and replies with clear
understanding and may often bring up new points, allowing the students
to learn more. |
22.
Cool but evil guy. I think lectures need to have more direction and
needs to be more focused. Tends to digress. |
23.
I am a star war fan too, but the lecturer note color scheme is really
not very "exciting". |
24.
Though the lectures are not so helpful (I have to figure out things
myself to do ps), but I have no idea how the lecture content can be
improved either... |
25.
Module has been impressively carried out so far despite being the first
run. One of the few lecturers whose PhD is not in the field of sleep
induction. One of the few who got the focal area of a CS module right. |
Skip:
14
(35.9%) |
Re: Comment 2, I also
know lah, but the "other" modules, I taught them at least 3 times, maybe 5. Much
easier to be much better when you're not making things up when you're going
along. Thanks for your patience.
Agree with Comment 8 that I am not entirely fluent in Objective-C, but I really
didn't have time to deal with Objective-C while running around trying to get the
problems sets and class together. Should be better next year. I think it's
important for me to admit that I'm unsure about things and students check
instead of anyhow whacking and teaching the wrong things. :-)
|
|
1)
Multiple Choice
Do you think the
problem sets were designed well to meet your learning needs? |
Response |
Percentage |
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. |
|
Skip |
0
(0%) |
Happy to note that 85% of the students learnt quite a lot
from the problem sets.
2)
Multiple Choice
How would you assess
the difficulty of the problem sets?
|
Response |
Percentage |
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 |
|
Skip |
0
(0%) |
I'm quite pleased with this result. The problem sets were
calibrated to be challenging.
3)
Multiple Choice
How much time per week
do you estimate that you spent on CS3217? |
Response |
Percentage |
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. |
|
Skip |
0
(0%) |
I think the workload
this past semester is too high. Will review how we can reduce the workload and
yet preserve the learning value for the course. It is also plausible that our
admission criteria was not sufficiently strict and some students were less
prepared for the rigours of the course than we had expected.
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, useful! |
2.
Yes, useful. I really learnt sth from the feedbacks. For example, I
didn't understand the MVC quite well when doing PS3. But after
participating the tutorial discussion, I became quite clear for PS4 and
PS5. |
3. Yes,
they simply make sense and point out the way to get things right. |
4. 70:30
for useful and not useful. I found it more useful to come to tutorial
and hear others' feedbacks. Because anyway, it's better to see other
ideas wandering around. |
5. - not
much write up for my submissions, but generally they're helpful. |
6.
Quite helpful as they point out my
weakness and also give me some compliments. |
7.
yes. Pointed out errors and stuff i
made in the problem set, + make me think a bit on my design |
8. Not
really, the feedback comments sometimes are vague and sometimes there
were not much feedback comments. |
9.
Somewhat useful |
10. On
the coding part, not very much. On the design part, yes, but what was
much more helpful was seeing and discussing solutions by different
students in the tutorial. |
11. It
is quite useful. I could learn how to be a good programmer from that. |
12. Yes
it was useful as it taught me, more than just how to solve the problem,
but also how to improve my solution on getting to the answer. |
13. Yes.
All the good points and bad points are listed, so that I know clearly
the quality of various parts of my programming. From that, I was able to
fix my weakness, and well as strengthen my good points. Also, Joshua
pointed out some 'unclear' stuff (which has both advantages and
disadvantages and thus cannot be said to be either good or bad) so that
I can think about them more. This is good because they provide me with
different perspectives from mine, so that I can look at my points of
views at different angle and thus judge them more precisely. |
14. Yes,
it gave me a 3rd party perspective of my code clarity. |
15. Not
to much meaningful feedbacks, actually...except that it's telling you
that you suck in your assignment...:( |
16.
Yes |
17.
Not really. It identifies a few general issues but unable to go more
specifically into what is wrong or what could have been better. |
18.
not really. there wasn't alot of feedback to start with, and when
questioned, all that the staff said was that it's not done like that. |
19.
Yes. I tend to have better design ideas which I lacked the time to
change as the deadline approached. It is good to see that many of the
comments correspond to what I have thought. |
20.
No so useful. I hope I have feedbacks on how to improve the design. |
21. Yes I did find them helpful. It was good that each of our programs
were tested completely and then searched for any bugs. Also was able to
learn of better design methods that I could apply to future assignments. |
22.
I think they are somewhat useful, but not really much =) I would like to
hear some more about problem with my coding style, or how could my
design be improved. |
23.
Useful, but not sufficient feedbacks given. They generally point out
quite a substantial mistake/point, which upon discussion, the student is
not likely to make again for the subsequent PS. Students are likely to
remember these mistakes and not repeat them onto the other programming
assignments from other modules. |
24.
Yes useful. |
25.
Yes. Helped to see what mistakes I made, and how I could further improve
on my design. |
26.
They were quite useful, for they often pointed out architectural
deficiencies that I'd overlooked. In such cases, they were almost always
helpful when considering the design for the next problem set's solution.
On other less-frequent occasions, of course, they merely highlighted
those compromises that I'd knowingly made [for the sake of time,
brevity, or otherwise], in which case they weren't as helpful. |
27.
Yes they were very useful. They were quite detailed and well explained.
Also they were very useful because of the nature of the problem sets.
Since most of the PS were interconnected (esp 3,4 and 5) feedback on all
of them could be applied. |
28.
Not useful, too much time coding, no time to think about these. |
29.
There were pretty appropriate to help the lecturer benefit the future
batches. |
30.
Not bad. Some of it was quite useful. |
31.
My TA is Marian. His feedback is very good, pointed out my design flaws.
I have no complaint =). |
32. Yes.
I can tell that tutor put a lot of efforts on grading our problem sets
and giving feedbacks to us. The feedback write-ups point out problems
existing in my problem set.
|
33.
Sometimes, it also gave some coding-optimal suggestions. |
34.
Quite useful. At least I know what my mistakes were. |
35. Yes,
the feedback is details and specific. It's quite helpful for me. |
36.
They were mostly useful, as they pointed me to the right direction as to
how certain parts of my code was not organized properly/wrongly used.
However, I feel that more emphasis on design could be put, for example
maybe there could be a sample class diagram with methods that really
makes us understand what goes where (I don't think we did it perfectly).
On a side note, the feedback from Prof Leong for PS3 was really helpful.
Maybe should have that style of feedback for the future batches. |
37.
It is useful as it helps me know how to improve my code as well as my
design. |
38.
Yes, I find that they are pretty useful. Those smiley faces in the
scripts really help to push us further.
It was alright. |
39.
Yes. Helped me improve my code |
Skip:
0
(0%) |
I am happy to see that the feedback for the problem sets is mostly useful. In
the cases where the feedback isn't too useful, it is plausible that the student
did very good work and so the TAs don't have too much value to add.
4)
Essay
What are your views on the problem sets in general? |
1.
takes too much time, with not much learning value. |
2.
Takes up far too much time. |
3.
Generally, the problem set is good. In fact, all the algorithm except
ps4 are quite straight forward. The only problem is my own fear. When I
read the problem set at the beginning, I felt fear. My mood is also
quite down and do not want to try. Luckily, it is an assignment. I need
to overcome my fear. It is what I learn from the problem set. |
4.
Certainly time taking (at least when compared to problem sets for other
modules). |
5.
Challenging and time-consuming, definitely, and rather helpful in
general, they boosted the three points I mentioned above, coding,
motivation and determination. |
6.
Takes up a lot of time. |
7.
Good effort for first attempt at the
PS for modules. Change in problem sets during the week, though
understandable, was a problem, especially for people who started early. |
8. -
Cover a wide range of topic & skills, which is good. - Work load is
heavy. - Generally well written, except for PS4 about physics engine
(which it was updated twice a day..) |
9. I
think the learning objectives were well divided among the 5 problem sets
and there was noticeable diversity in them. |
10. Most
interesting homework I've every done in my life. It is simple to submit
something which just works, but I always wished I had more time to redo
the entire design to account for things I never realised during design
phase but there is not enough time to do so. |
11. To
follow detailed information to learn a language and apply SE techniques. |
12. some
gold in sands. The gold is there, but we need to go through the pain to
filter the sands ourselves. |
13. Well
designed and executed. |
14. They
are quite interesting. |
15. They
are more challenging than I would have thought initially, with some of
them teaching pretty useful things. I think PS3 and PS5 are the two more
fun and useful program sets because they test the design of the OOP
relationship the most. |
16.
Well-designed. Kudos to the staff =). They are challenging and we all
certainly learnt a lot from our mistakes while integrating old PS into
new PS. |
17.
They are pretty good. (have also given feedback on them in PS5). |
18.
They are difficult but still doable though the time given was too
little. |
19.
time consuming (although it might due to my not-so-perfect SE skills)
INTERESTING |
20.
Generally, ok, fun, but painful like hell =)) A bit too much to be done
on our own, especially when the lab was too good for the first few weeks
=). And ps 4 got quite some killer errors that drove most of us crazy
:)). However, if all these "minor" problem are settled well before the
class starts next year, (now most are resolved :)) I think the next
batch should also have the chance to deal with the same level of ps :) |
21. They're more positively challenging if you take it seriously.
Otherwise it's negatively challenging. |
22.
Maybe some hints on the SE portion would have been helpful in the
Problem Sets. Such as - you could use this design pattern here. Also, a
feedback-review mechanism would have helped more. I never went back to
my PS5 code to improve it. Though we had feedback, there was no time to
go and review the mistakes and repair them - and learn something out of
them. |
23.
Too time-consuming |
24.
They are challenging, i could see the purpose of all the problem sets :) |
25.
A little disorganized, sometimes a little unclear, but alright in
general. |
26.
Challenging. They are as good as I can imagine them to be. |
27.
Eh...I was disappointed by myself on some problem sets. But later I
realized that it helped me to figure out some of my problems, such as
efficiency problem and designing problem. |
28.
The problem sets focus on what is taught in the lecture. They are good
practice problem for me to try on. |
29.
They are quite heavy, but not so hard. The problem sets are also quite
well-designed, so that learning experience and value are high. There are
many possible implementations for each problem set, so that one must
consider carefully the advantages and disadvantages of each
implementation and choose the most suitable one. Also, the pace/order of
learning is good. Each problem set introduces new things to learn, as
well as applying of stuff which was learnt in the previous problem sets.
Lastly, the problem sets cover quite a good range of software
engineering: parallel programming (ps4), testing (all ps), analyzing
problems (ps3), and integration (ps5). |
30.
2, 3 and 5 are ok. I and 4 are quite pointless |
31.
They were very good, and difficult. |
32.
Maybe they are a bit too harsh for students to consume them in 6 weeks
but it gets people feel good once they overcome the difficulties & solve
the problems. |
33.
Time-intensive, and killer. Generally fun to come up with ways to solve
the problems in the problem set. |
34.
Interesting. But more time should be given to do the assignments more
properly instead of having to rush every assignment. |
35.
Challenging but effective for my learning. |
36.
I find problem sets 1 and 2 to be quite good. Problem set 2 gave a good
introduction on unit testing and ADTs. Wasted too much time on problem
set 3 figuring out things like how to add gestures and how to use affine
transforms instead of learning how to design the struture of the code.
Problem set 4 has too much errors. Problem set 5 was ok. |
37.
It is challenging, but time-consuming. Fun to do. |
38.
There were very challenge and time consuming. More help should be given
on teaching us the right tools to use to improve our efficiency. |
39.
They are OK generally. |
Skip:
0
(0%) |
Glad to see that most students thought the problem sets were pretty good,
though there's also a consensus that maybe they were also too time consuming.
5)
Essay
Please let us have your suggestions on how the problem
sets can be improved to make learning more efficient.
|
1.
Next time, may be you could try not to give the appendix in PS4. It will
be a real challenge. In fact, if I were asked to do that PS, I do not
think I could finish it within 1 week. |
2. PS5
required a lot of photoshopping skills, rather than xcode skills. Could
improve it by making the images easier to use. |
3. I
think they were fine |
4. Prev
answer. |
5. They
are ok. Hope that the physics engine does not have typos. |
6.
Exploration should be somewhat guided. |
7.
Maybe can give my explanations on some terms. Maybe they seem obvious
for TAs and lecturers but take many hours for us to debug. |
8. have
also given feedback on them in PS5). |
9. just
applying the typos and improvements that we have (esp for PS4) are good
enough |
10. My
suggestions on problem sets are 1) It would be better if we make all
problem sets more concrete. 2) Some problem sets are a bit off-focus. If
our main goals are to improve programming skill and do better in
software engineering, then reducing some math challenges will be better. |
11. Some
write ups can be improved. The problem set is very long and from time to
time I find I need to look for requirements along the lines. Maybe can
put clearer specification of requirements separately in a section. PS3
and 4 may be too heavy comparing to 1 and 2. Maybe, balance a bit. |
12. give
us more details about the problem set even when we are doing ps3 and 4
so we can plan the design better. |
13. To
encourage the students to put even more thought into the design, the
weight of the questions asking them to defend their design/architecture
against alternatives could be increased. |
14. I
felt that more help could be given to students to tackle the apple stuff
so that they can concentrate on designing the system. |
15. PS5
will be funnier if we were provided with more arts. It makes extending
the game in our own ways easier. |
16.
For me problem sets would be more interesting if it's stressed on the
designed and practices as much as the programming part. |
17.
Put it as appendix some useful API. |
18.
Aside from what I wrote in my PS submissions, I feel that testing is not
really emphasized in the current problem sets. Even though we're asked
to write test strategy in PS3, 4 and 5, I suspect very few of us did
spend time writing the test (partly because we barely had enough time to
finish the assignment). |
19.
I think that perhaps the problem set could be improved by giving certain
key words that we could search to encourage independent learning. |
20.
I'm not really sure, because I think I learnt a lot =). And I forgot
most of the PS now, so maybe you can refer to my submission for the PS
for my suggestions :). |
21. It might be better if there is tutorial/consultation sessions in the
middle of the week for discussion of the problem sets and problems
faced. |
22.
Some examples/references would help. For example in the second problem
set, I had to figure out myself how to build a good MVC system as that
time I only knew the theory from CS2103, but never built such system. |
23.
- Problem set 3: more iOS reference needed. - Problem set 4: formula
should have explanation (or the idea / purpose of the formula). Actually
they are quite simple, but the way they are written (plainly math
formula) made them complicated and hard to understand). - Problem set 5:
probably the requirement should be announced before 3 and 4, so that
students can design part 3 and 4 to fit the requirement. |
24.
I do believe some "good coding practice" can be offered from TA's
experience. It is a waste of time to figure out something which is truly
common but obscured . I understand it is critical to train programmers
to learn something new, but due to the time constraints, some existing
solution may be quite helpful. |
25.
I suggest a change in order for PS3 and PS4. PS4 design is more likely
to be deterministic of the final design. It makes more sense to design
PS3 from PS4. |
26.
They are generally overwhelming. I normally can not figure out the
"algorithm" to solve a problem set right after finishing read it. Can
definitely use some guidelines. |
27.
ps4 should be more open ended. really. even if the students cannot
finish it, at least they go through the process of figuring out how to
do, which is a damn important skill. |
28.
More design and thinking problem sets would be very helpful. |
29.
I think certain things that require objective-c specific methods/classes
could be highlighted, to prevent us from having to search ourselves in
order to do certain things. |
30.
Maybe that was part of the objective of the problem set, but I feel that
I learnt more objective-c than concepts in general through the problem
sets, which I guess.. isn't what the course wanted. |
31.
Maybe we can have deeper coverage and practice of advanced patterns
(considering this is an advanced SE course)? |
32.
Release problem sets together? So students have an idea of what are they
expecting to do after completing the current one. This would be useful
in designing of the code etc. (i know this time round it is not possible
as they are new) |
33.
Polish up the minor mistakes pointed out by students. Also, try to
integrate PS1 and PS2 together by making them even more related to PS3,
4 and 5 in general. I have pointed this out in the bonus question of
PS5. =) |
34. I
think test cases should be made public after the problem set is over
(except there is some late submission), so that students can manually
test and debug the program right away, instead of waiting for the graded
problem set. One downfall is that the test case may be made known for
future students, in theory, but I believe no one in the class would do
it, as well as no one in the future class would ask for it. |
35. Do
away with the first PS and spread out the other problem sets over longer
periods. It shouldn't take too long to figure our Obj-C. |
Skip:
4
(10.3%) |
Thanks for the feedback. We will most definitely review the problem sets next
year. Sorry about the bugs and typos. We already tried our very best.
|
|
1)
Multiple Choice
What is your overall impression of CS3217 thus far? |
Response |
Percentage |
This is a horrible module. I truly regret choosing it. |
0
(0%) |
It's alright, but mostly painful. |
10
(25.6%) |
Just like any other module. |
0
(0%) |
It's a good module and I definitely enjoy it. |
23
(58.9%) |
CS3217 rocks! Coolest module I have taken in my life. |
6
(15.3%) |
Skip |
0
(0%) |
Sorry to see that about 25% of the class regretting the decision to take
CS3217. Hopefully now that people know
what to expect, the students next year will make better choices. Certainly
CS3217 is not suitable for everyone. It's not *just another* iOS programming
course.
2)
Essay
What do you think you
have learnt thus far? |
1.
Designs, algorithms, patterns. way of thinking, and way of living.
extrinsic motivation v.s. intrinsic motivation. |
2.
Objective C + Cocoa Touch Design, especially MVC - maybe the apple way..
Patterns that I didn't really use, but I would like to if possible. Haha.
Memory management. However I feel that almost all of them are rather
Objective-C specific.. |
3. The
most important point that I have learnt thus far is to integrate the UI
and intensive background codes together (in this case physics engine).
Integration is probably one of the most important learning point since
it is always required when coding in real life and having to integrate
your own code with the organisation's current system. |
4. Not
really sure. But there are multiple ways to do things. And what we do
isn't always the "right" way. |
5. How
to survive =). Sometime I felt it's too much painful TT. Now when
getting through all and surviving all, I still think that's too
demanding TT. Anw, beside that surviving skill, I learnt quite a lot
about Objective C and several SE patterns, such as MVC, factory... The
important thing is I feel that I really touched on something deeply, not
just like most of other modules TT. And therefore, I felt much confident
now. |
6. -
Objective-C and iOS programming. I'm now relatively comfortable with
writing objective C code. - Talking with / sharing with / asking friends
is the best way to do thing / learn thing faster. - Designing is not
trivial. |
7. some
design of the code, self-motivation, and some software engineering
knowledge |
8.
Software engineering at its best. |
9. Basic
engineering principles |
10. 1)
Get myself completely focus to get something done. 2) Learn from
mistakes/bad design done by myself. 3) Objective C |
11.
Objective-C. MVC modelling. Some SE techniques. |
12. My
software engineering skills have improved a lot. I learnt about unit
testing, design, some common pattern , integration and much more.
Objective C, Mac and mobile platform are cool. |
13. Some
SE topics pretty well. Objective C. I was even mixing that up while
writing C++ code today... |
14.
objective c + a little bit on designing software |
15. 1.
Read a PS, take a breath and then continue.... 2. Calm down all the time
no matter how huge the bug is 3. First thing to do in a PS is to think,
second thing is to think and third thing is still to think. 3 days is
enough for coding. But 3 days may not be enough for thinking. |
16. 1.
Objective-c 2. Software Engineering 3. Got used to the good IDE, Xcode.
4. I got more power to face problems. |
17.
Solving problems does not necessary involve using technology. Parallel
programming. Testing. Integration. Objective-C. Design pattern: MVC,
singleton, factory. |
18.
More software engineering in practice. Some of the "useless" things
learnt in 2103 make sense now, while others still remain useless. A lot
of lessons learnt on how SE decisions will come back to haunt you. |
19.
Well it's too much to list down but here are "some" of the things: --
objective c -- building a physics engine -- using open source box2d and
chipmunk engines -- learning to code well -- design patterns -- unit
testing -- game designing |
20.
Software engineering. Learn by suffering. |
21.
how to sleep in the lab how to code 21 hours straight -ok, that's
probably not the right one- How to code in Obj-C How to use iPad How to
code Physics Engine How to do unit testing |
22.
I think I'm better at reading platform/API documentation, figuring out
differences between and pros and cons of designs, and more confident of
writing code in general. |
23.
Learnt about MVC and unit testing. |
24. How
to program in a structured manner and best practices. |
25. Why
I suffer. More concrete ways to represent and ensure correctness of the
program (rep invariant). Pain of integration with bad design.
Programmers as higher beings have to be ready to learn about others'
domain knowledge to solve their problems. |
26.
Objective-C, software engineering, hard work. |
27.
Mainly SE stuff |
28.
Objective C |
29.
How to develop and code in IOS. Objective C. Design methodology. |
30.
How to stay overnight debugging for a stupid bug (maybe :P) I really
sacrificed a lot of sleeping for CS3217 but I think it deserves it. |
31.
How to learn a new language |
32.
Persistent in independent work and awareness of risk & time management |
33. I learn a lot
about objective-c and apple MVC. |
Skip:
6 (15.4%) |
It might seem a little odd that we ask such a question. It
is not. Teaching is really quite so simple. It's one thing about knowing what
we're trying to teach. That however doesn't mean that what we *try* to teach is
necessarily received in exactly the way we expect and hence the need to check
back. :-P
3)
Essay
Please share
one thing you love most from this class |
1.
Lots of challenging opportunities and learning values |
2.
Challenging, interesting and new stuffs, fast learning pace. |
3. Fun
pain! |
4. It's
always fun to suffer in the lab with your mates. |
5.
Classmates |
6. I
loved the assignments every time I finished them :) it was like an
enlightenment when I usually figured out what the lecturer expected out
of us and I manage to get the code working... |
7. iPad
and McDonald every week=D |
8. Prof
Ben's Mac =). Not the machine, but the food =) |
9. It
being the only module with planned programming assignments which is
sufficiently challenging and its percentage justified. Other modules
include an unreasonably sized programming assignment simply due to
complaints from industry about students lacking practice, accompanied by
unreasonable 10% weightage. |
10.
sense of accomplishment after completing problem set |
11.
Coding with friends in the lab, finding sofas in the middle of the night
to sleep on, and sighing when you see dead bodies on the sofas already |
12. my
iPad |
13.
Learning how to use all the gestures for UIViews from PS. Actually
another that I love equally is the appreciation of the physics engine
that has been created by others (Box2D, Chipmunk) that works out so
well. |
14.
Highly motivated and competitive individuals. |
15.
Everything except the answer to 19 :) |
16. Ben
Leong |
17.
pushed to get things done (enjoy the pain & suffering?). |
18. the
iPad |
19. The
process dealing with problem sets. |
20. I
loved the issues discussed in class, especially the topic on failure and
the topic on tiger mums. |
21. I
get an iPad. I think I'm the only weird soul out there who actually
enjoys coding in Objective-C (not the problem sets, the language); I
kinda got used to its memory management system which most of my friends
hate (in favor of exceptions.. I think), and I like how it is heavily
integrated with the GUI elements. |
22.
camaraderie |
23.
The iPad! And the feeling that you've climbed a mountain when you submit
the final PS. |
24.
The fellow students are awesome. |
25.
The coolness of developing an iPad app! |
26.
night of coding at PL1 with iMac and iPad |
27.
27 inch iMac :p |
28.
I like the difficulty |
29.
The thing I love most from this class is the physics engine in PS3. That
was really, really cool. I love building games, and physics engine is an
essential part of a game. I have seen many physics engine, like Box2D
before, and alway wanted to build a physics engine myself. And that came
true when PS3 was released. I was very very excited about the physics
engine. After finishing, I even implemented circle right away, before
expanding the problem set to polygon (but unfortunately did not
successfully debug). In short, PS3 is the best problem set/hw problem I
have ever seen :-) |
30.
Coding with friends in PL1 at midnight every Friday and Saturday.... |
31. the access of the super big iMac... |
32.
Working late night with my peers. |
33. Everyone's genuinely passionate about what they do. |
34. iMacs :P |
35. Have
an ipad for 1 semester ; ) |
Skip:
4 (10.2%) |
Glad to see that many students liked the challenge ("pain")
and also working ("shared suffering") with other equally motivated classmates.
:-P
4)
Essay
Please share one thing
you hate most from this class. |
1.
The need to stay overnight in the Mac lab. |
2.
Kinda throws you out of schedule (especially when you happily think you
have the recess week to get back on track, and there you go). But I'm
not sure if we can complete so much stuff strictly before the recess. |
3.
Painful fun! |
4.
Objective C =). The most verbose, crazy, stupid language I ever learnt
=), and Mac is such a nightmare to use =)). To be more serious, I think
the one thing that I really hate is working too much for quite long,
which could sometimes deteriorate my enjoyment in the work TT. |
5.
Coding in PL1 even when I want to sleep every Friday |
6.
sleeping time dramatically decrease.... |
7. I
hate it when there are chunks of codes on the presentation, makes it
boring. but i think its no choice. |
8. The
late submission of problem sets. |
9.
Working late night all the time... |
10. The
pain and all the time spent. |
11.
workload. we have other modules. |
12. the
amount of time spent. |
13. How
much time it takes away from other modules |
14. How
it ate away my recess week leaving no time for other modules. |
15. My
CNY and recess week ended when they had not started :(( |
16. To
create my own physics engine and pray that it works well when I follow
strictly to the appendix, to find out that in the end, it's heavily
based on biasness value and really didn't work out too well for my case.
=/ (but well it did work for some others) |
17.
different tutorial group standards, some tutorial groups have code
review of problem set, with comments on the students coding style in the
problem sets and good code/bad code emails, and the tutorial groups
cover topics on SE and coding style. Other tutorial groups do not have
all these. |
18.
Transportation effort to Mac lab |
19.
Coding day and night and having no more time for other modules. |
20. I
hate the fact that this module consumes all my time. |
21. It
altered my sleep hours. |
22. Too
time-consuming |
23.
Sleepless weekend nights... |
24.
Suffering,!!!!!! :( |
25. Lab's air-con
doesn't work over the weekends :( or at least it didn't the last time i
went there... |
26. PL1. I prefer my
macbook. There was always too much noise there to work properly. And
people were usually jumping around. |
27. That I can't put
my 100% into this class thanks to the other half of my irrelevant degree
requirements. |
28. - the lab is too
hot sometimes - there's no bed (or mattress) in com1 |
29. That I did not get
any sleep for the past 6 weeks and am lost in all my other modules :P |
30. Labs are not
accessible most of the time during office hours, due to labs, sit-in-lab
etc. |
31. It is
time-consuming. |
32. PS4 |
33. days and nights of
coding... |
34. night of coding in
recess week |
35. stuffy lab |
36. The fact that we had to stay over in the lab for so many days to
finish up the problem set. But comfort in shared suffering; it was
tiring but fun. |
37. The first thing which comes to my mind is PL1. Ironically, the lab
is super cold during day, but then becomes super hot during night,
especially during weekends, the time we students spend the most at the
lab. |
Skip:
2 (5.1%) |
Sorry there was a programming bug in the PL1 aircon system that only got
resolved after several weeks. The workload issue is noted. Will try to resolve
it next year. :-)
5)
Multiple Choice
Would you recommend
the module to anyone else? |
Response |
Percentage |
No, I won’t want them to suffer the pain I did. |
0
(0%) |
Nah, I don’t think it’s worth it. |
0
(0%) |
I have no opinion about this. |
11
(28.2%) |
Yes, I will encourage anyone who asks me. |
24
(61.5%) |
Of course, every NUS student should take this
class! |
4
(10.2%) |
Skip |
0
(0%) |
Given all the unhappiness about the workload, it is quite surprising that 70%
of the students will still recommend CS3217 to their friends. I guess this is
what's meant by "spreading the love" (or suffering?). :-P
6)
Essay
Please give us your
comments and suggestions on how to make your learning in CS3217 more
efficient and interesting. |
1.
It is already very interesting :) |
2.
Maybe longer tutorials, to allow us to learn more in class, as opposed
to us having to pick up everything by ourselves. |
3. More
Tools and Testing frameworking guides pls. |
4. I
think learning in cs3217 is based very much on independent learning, so
I don't think there is any better way. |
5. Loan
out macbooks, instead of restricting students to mac lab. |
6. The
teaching team have done great work! many thanks |
7. Align
students expectations with software engineering concepts by conducting a
survey at the beginning of the module |
8. I
think the lecture on Tue should be 2 hours while that on Thur should be
1 hr. This may give us more time to learn sth useful for the PS that
week. |
9. I
would think that the lectures are a bit off from the problem sets, which
is very different from CS1101S where the lectures tie in very well with
the problem sets. Don't know what to suggest to improve here but the
feeling is there, so it may be worth looking into how to integrate the
lectures and PS better. |
10. It's
cool already, I believe it will better next batch :) |
11.
Module is sufficiently interesting, perhaps Obj-C lectures can be left
to Stanford instead. |
12.
focus less on writing code and more on intellectual stuff like solving
problems. maybe having a ps that solves real world problems would be
good as well. |
13.
Maybe, to make the PS more realistic, certain constraints could be
introduced to force trade-offs between performance etc & a perfect
design? For instance, while notifications might make for a really nice
design with observers etc., they incur a big performance hit, so the
later problem sets could specify a minimum FPS for the games to run at? |
14. it's
too competitive to be interesting... |
15. Once
again, more design, since we code so much, After design a lecture on
process would be great. Like the Continuous Integration etc. |
16. If
possible, you could release all the code for PS1-5 of every student so
we can learn from others' code. |
17.
Since do it will be a serious crime to any others =). More Mac from Prof
Ben is very important to make it more interesting =). Keeping the
content as a game like this year will be great. However, we should be
better informed and prepared, esp for the Physics engine PS =). ( A
great thing from that is now I learnt a great deal of physics on my own
=) |
18. 1)
maybe tutors can share their experience with xcode/obj c so that we can
learn from their pitfalls? 2) every team set up a team blog to update
their progress? |
19. Very
interesting already. I think any junior go through what I went through
would be as great as it can be. |
Skip:
20 (51.3%) |
Thanks for the suggestions. Will look into them next year. :-)
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.
CS3217 is cool :-). One of the must-take module for any CS-students (and
whoever loves programming) :-). |
2.
I hope I can survive the semester. |
3. I
think its a fun module that opens my eyes up to the world out there, and
the possibilities. |
4. I
feel the interactions in class is not good as cs3216. ppl don't want to
talk - maybe that's the problem with geeks... |
5. The
work load is too heavy and can affect performance. Also when we're too
occupied by the psets, we don't have time to ponder about the final
project and other things. |
6. Not
the happiest, of course, but definitely one of the most (if not the most
:)) memorable classes (or things) I've ever been through :D. |
7. Maybe
providing some beds (or something to sleep on) will be much appreciated
:D |
8. Quite
a fun module but really overwhelming heavy (took up the whole of recess
week to do PS5, probably the only time in my life a module can do such a
thing). Most of the learning is indeed done individually and not in
lecture at all, which does reflect the real life situation for
programmers. Would suggest the module to look into Android as
alternative because from this year onwards, I foresee the Android market
is going to open up a lot with all the new slates that are going to come
up. Furthermore, Java (for Android SDK) can be done in Windows, so
students don't have to suffer anymore to always code in the iMac Lab,
which luckily I don't have to thanks to a powerful desktop at home for
VM. If still using iOS, then maybe investing in MacBook for students to
loan out would be a good choice. |
9.
honestly, I find spending the whole recess week on the last problem set
quite ridiculous. It'll be perfectly fine if it is a 16mc or 20mc
module, but the fact is that we have other modules that we need to take
care of, and too much time is being spent in this module. Even if the
reason we spend so much time in the recess week was because that we
didn't do our design for ps3 and ps4 properly, I still think its just
too extreme. |
10.
CS3217 is a great module! It's special, different from all other modules
in NUS :) |
11. I
hope after this semester, Prof Ben could use 6 weeks to do an angry
birds for us~~~ (Assignment for him~~~) |
12.
Great module. Thanks to Prof Ben and all the teaching staff for putting
in all the hard work for putting together such a unconventional and new
module together in such a short period of time. |
13. This
is actually a very cool module. |
14. Warn
students not to overload/5 modules when taking CS3217. As good as
committing suicide if you do. |
15. A
very cool course so far. Thank you for making this possible. |
Skip:
24 (61.5%) |
Thanks for the kind words. I suspect that the module will be better next
year. I apologize for some of the unnecessary bleeding and suffering this year
due to some mismanagement of the workload and bugs. It's always painful to be
the first batch of a new bleeding edge class. Three years ago, the situation
wasn't too different with CS3216. Thanks for your kind indulgence thus far.
|