Course Description:
CS 136: Elementary Algorithm Design and Data Abstraction
This course builds on the techniques and patterns learned in CS 135 while making the transition to use of an imperative language. It introduces the design and analysis of algorithms, the management of information, and the programming mechanisms and methodologies required in implementations. Topics discussed include iterative and recursive sorting algorithms; lists, stacks, queues, trees, and their application; abstract data types and their implementations.
Dave's Comments:
Teaching Evaluations:
Number of Respondents: 53 / 83 (64%)
Evaluate the organization and coherence of the lectures. |
Excellent | Good | Satisfactory | Unsatisfactory | Very poor | No opinion |
38 | 14 | | 1 | | |
72% | 26% | | 2% | | |
At what level were the instructor's explanations aimed? |
Too high | Somewhat too high | Just right | Somewhat too low | Too low | No opinion |
4 | 4 | 42 | 3 | | |
8% | 8% | 79% | 6% | | |
Evaluate the instructor's treatment of students' questions. |
Excellent | Good | Satisfactory | Unsatisfactory | Very poor | No opinion |
41 | 11 | 1 | | | |
77% | 21% | 2% | | | |
Evaluate the effectiveness of the instructor's visual presentation (blackboard, overheads, etc.). |
Excellent | Good | Satisfactory | Unsatisfactory | Very poor | No opinion |
39 | 11 | 2 | 1 | | |
74% | 21% | 4% | 2% | | |
Evaluate the effectiveness of the instructor's oral presentation. |
Excellent | Good | Satisfactory | Unsatisfactory | Very poor | No opinion |
48 | 4 | 1 | | | |
91% | 8% | 2% | | | |
Was the instructor available for help outside of class? |
Always | Most of the time | Often enough | Not often enough | Never | I did not seek help |
28 | 5 | 3 | | | 17 |
53% | 9% | 6% | | | 32% |
Did you find the course interesting? |
Very Interesting | Interesting | Not interesting | No opinion |
33 | 18 | 2 | |
62% | 34% | 4% | |
Evaluate the overall effectiveness of the instructor as a teacher. |
Excellent | Good | Satisfactory | Unsatisfactory | Very poor | No opinion |
46 | 6 | 1 | | | |
87% | 11% | 2% | | | |
What proportion of lectures did you attend in this course? |
90-100% | 75-90% | 50-75% | 25-50% | < 25% |
48 | 5 | | | |
91% | 9% | | | |
Was the assigned work (assignments, projects, etc.) helpful in learning the course content? |
Very helpful | Helpful | Not helpful | No work assigned | No opinion |
32 | 19 | 2 | | |
60% | 36% | 4% | | |
Were the printed notes (if any) helpful in learning the course content? |
Very helpful | Helpful | Not helpful | No printed course notes | No opinion |
26 | 13 | 3 | 9 | |
51% | 25% | 6% | 18% | |
Was the required textbook (if any) helpful in learning the course content? |
Very helpful | Helpful | Not helpful | No text required | No opinion |
6 | 8 | 10 | 26 | |
12% | 16% | 20% | 52% | |
Did the course introduce an appropriate amount of new material? |
Too much | Somewhat too much | Okay | Somewhat too little | Too little | No opinion |
4 | 12 | 33 | 2 | | 1 |
8% | 23% | 63% | 4% | | 2% |
Was the amount of assigned work required for the course appropriate? |
Too much | Somewhat too much | Okay | Somewhat too little | Too little | No opinion |
10 | 27 | 16 | | | |
19% | 51% | 30% | | | |
On average, how many hours per week did you spend on this course outside of lectures? |
0-2 hours | 3-6 hours | 7-10 hours | 11-15 hours | > 15 hours |
| 9 | 17 | 14 | 13 |
| 17% | 32% | 26% | 25% |
At what level were the instructor's explanations aimed? |
- [Just right] He knows exactly what needs extra explanation
Evaluate the effectiveness of the instructor's visual presentation (blackboard, overheads, etc.). |
- [Satisfactory] Possibly explaining the course notes a bit more and annotating them with examples. This term, I found that the course notes were not as strong as last term and harder to follow along. Possibly explaining some of the parts more would be helpful.
Was the assigned work (assignments, projects, etc.) helpful in learning the course content? |
- [Helpful] Those questions really take a hell lot of time :|
- [Very helpful] Some of the earlier assignments ( 1 to 3) were a very big jump from CS135, especially for a new programmer. I found after those 3 assignments that there were better explanations and breakdowns of the assignment questions into mangeable parts.
Were the printed notes (if any) helpful in learning the course content? |
- [Not helpful] I found that this term the course notes where not as easy to follow as last term in explaining the inner workings of C. I found that the anaolgies in lecutre provided a lot more help in my understanding such as the brick to represent memory.
Was the required textbook (if any) helpful in learning the course content? |
- [Helpful] Great practice questions in there. I wish it would be used a bit more.
Did the course introduce an appropriate amount of new material? |
- [Too much] There is a huge gap from Racket to C for beginners
Was the amount of assigned work required for the course appropriate? |
- [Somewhat too much] Assignment 3 was wayyyy to much, Also, midterm long.
On average, how many hours per week did you spend on this course outside of lectures? |
- [> 15 hours] I am not sure if I just suck or the assignments are hard for beginners, every week I spend 25+ hours on assignments and the result was not that satisfying. (ps: I only take 6+ hrs on all the other courses)
Note: This is a complete list of comments I received, listed alphabetically to avoid bias.
Please mention anything that you feel the instructor has done well in this course. |
- Always very present and open to new ideas.
- Blackboard examples were very helpful and might be better than walking through actual code in some cases
- Dave answers every question and explains it so that it can be understood very well
- Dave is very passionate and explains the concept clearly.
- Explained all the course content in an organized and interesting manner. Made sure that we understood the course content.
- Good explanations and use of the board to illustrate abstract ideas
- Great and clear explanation. Keep the students entertained.
- harder for me to fall asleep relative to other courses;
goes on reddit and explains a lot of stuff
- He made the course notes which are pretty helpful.
- He tries to make this interesting
- His explanations are detailed and easy to be understood.
- Illustrations on black board were helpful for modules relating to linked lists.
- It's Dave, he does everything well. You can see he cares about his students and likes teaching, and it really goes a long way. His lectures are always enjoyable and he even notices when people tune out and lets them know when something very important comes up. (Also thanks for going on the subreddit and doing AMAs, it's really cool of you)
- Just absolutely perfect
- Made the course more interest with jokes and ???
- Making the class engaging, explaining key points, being available outside of class.
- Passionate professor, cs classes are boring but he is trying to make it interesting.
- Props to you. Great course once again. I liked the way you visualize pointers.
- Really liked the clicker questions. Even if they were not worth marks I would still come to class just to do them. Some got me thinking even more than certain assignments.
- The analogies and answering of questions helped me more than I thought it would. The lectures were mostly easy to follow and at times fun to listen too.
- The class is always in a good atmosphere, and it is very enjoyable.
- Very enjoyable personality, very good explanations.
- Very good at giving examples to visualize different topics (with pointers, linked lists, etc.)
Please make constructive comments about anything in the instructor's technique or style that could, in your opinion, be improved. |
- Came early to class for kunfu panda but was late to the last film clip caz the previous teacher extended class time, lost a clicker question
- Could slow down and go in depth more with dynamic memory.
- Drink less coke, and try to not fall behind in content as it is very hard to do assignments before learning it.
- I can genuinely think of nothing except DRINK LESS COKE DAVE future UW students need you.
- I did not feel engaged at all times in the lecture as I was in CS 135. Even as a new programmer, some concepts were dragged out too long. For example, the focus on the differences of functional and imperative language could be shorter.
- I love the examples and the references that Dave makes while explaining different concepts, something the jokes are too good but sometimes they are so bad which even he points out himself which even makes it more hilarious and reduces the tension in the course.
- "LeSs CoKe ZeRo" but seriously not much I can see you can improve on. Maybe post edited slides?
- Maybe instead of talking a lot about the actual application in real world, focus more on the materials itself so we dont have to rush on some slides to catch up the speed of other class? but i understand dave just wants to make the lecture interesting.
- Maybe slowing the pace down just a little but it is mostly okay
- Moving a little bit slower would be great, but I realize that may not be possible because of the amount of content in the course.
- Some lectures moved too slowly, but otherwise were good.
- some stuff is too cringey and more live coding like DrRacket
also drink pepsi zero once in class would be cool
- sometimes you could throw some jokes at us to resume our attention when the material gets really dry after 50 minutes.
- spend 3-5 minutes revisit pointers would be good before teaching arrays!
- Stop entertaining so many questions. There were two students in my class who just kept asking questions. Like at least 4-5 per class each, most of which were really silly or could be answered by just re-reading the course notes later. Also got the feeling one of them kept asking questions to "show off" her knowledge (eg: Student: "ohh so x is for y" -> Dave: "you're 5 slides ahead of me!!!!"). Waste of time and annoying. Not that I mind questions but when it comes from the same two students every single class...Secondly, too many examples and analogies. Eg clothing pile for heap memory, etc. Would appreciate a more in-DEPTH explanation for how things worked. Analogies are only good for shallow understanding. I mean if you just think about clothing when you have to use the heap, obviously you don't understand the heap well or you could just be thinking about the heap.
- The time arranged for each assignment should be better.
- Work faster through simpler topics, occasionally would elaborate on a topic for quite some time even though I felt that almost everyone in the class understood it well enough already, led to being rushed in other sections.
What were the strong points of the course? |
- A very good overall introduction to C language
- Assignments are tough which teaches you a lot of things and the ISA's are really helpful which makes fun to learn this course.
- Flow of concepts from Racket (CS135)
- Good introductory course to C and materials balanced well.
- good learning of C, good problem solving stuff
- Instructors very available on Piazza. Slides had all the knowledge we would be tested on. Material was logically sequenced (eg hard stuff at the end).
- Introduce a new language
- introducing imperative language
- Memory model
- Slides were very thorough and covered each topic very well along with instructor support. Also was very easy to go back to the slides and read when I was unable to attend class. Class website is very easy to use
- Talking about the difference between imperative and functional programming, knowing the behind the scenes of memory management, the bits of enriched material that's cool but we don't have to know.
- The assignments do a good job of applying the principles in class in interesting ways (sudoku, hangman, etc)
- The explanation of the C memory model was great.
- The material and techniques (examples) are good.
- The material was presented in a way that is manageable for those without prior imperative programming experience.
- The skills learnt here are pretty useful
- Too many to list
- Very in-depth course, teaching fundamental concepts which aim to augment one's knowledge of other languages.
- Very in-depth explanation of the material in C.
What were the weak points of the course? |
- A lot of confusion between iteration and recursion towards the end of the course
- Assignments associated with dynamic memory were fairly time consuming and difficult to test for all test cases.
- Did not really think the content was very thorough on how to actually use C properly. Always felt like we were just playing around in some small artificial sandbox designed specifically to control how much we know and the features of C we use. Would also appreciate if we were taught good testing methodologies (was that taught in CS 135? Sort of I guess, not really), how to debug. The tracing tools were for the most part useless except for finding very trivial bugs such as off by one, etc. As well, this course had too much useless stuff such as the difference between the paradigms. I get that functional vs imperative is a really big difference but I think this part of the course was too drawn out. Also, not enough algorithms. Lastly, assignments were sort of boring, especially the really long ones (eg Splendor) which took a million years to understand but it was just simple programming. Would appreciate what they do in math classes which is one/two sentence problems that are difficult to solve. Most of the time I spent on CS 136 assignments was trying to decipher what the question even meant and having to constantly cross check with Piazza. One specific example is A9. Don't know why whoever wrote this assignment was not more specific on WHEN to resize/shrink. I mean yes he clarified on piazza but this is a really important aspect which should be on the assignment page itself.
- Frequency and length of assignments was too high.
- In my oppinion the course s very well oegenized
- It was a bit rushed at the end. I feel like we spent too much time on the material before dynamic memory and very little time on heap.
- Less time to study a hell lot of stuff, especially the last few sections.
- Malloc
- Memory and strings
- More functions should be introduced as side notes, such as calloc.
- Pointers
- Relative time spent on different topics. I know that new topics aren't really introduced in the end of the course, but in many cases the new applications of C features (linked lists, ADTs) are more difficult than the features themselves.
- Seashell is very clunky and hard to navigate quickly when you have to go from question to question or file to file. Assignments often tested our ability to test obscure cases, rather than the concept in general.
- seashell, marmoset system is weird, beginning of course is way too slow (imo) and nobody gives a fuck about the integrity statement lmao i just hate that so many of my friends/acquaintances ask me for help for gold questions
- Some assignment questions were a little ridiculous and the tutorials were most often useless even though I actually wanted to learn.
- Some assignments were too demanding to complete in the span of 1 week. As well, lab hours were usually very crowded and it would be easier to access help if they were held more in advance of assignment deadlines.
- some part of the materials are hard to understand at the first time.
- The course presented everything well. Maybe pointers but that may be dumb of me
- The transition into the imperative paradigm and SEASHELL. I'd prefer to use the terminal and a text editor. It would also provide students with greater understanding of their own computer rather than in seashell.
- This is harder for beginners
- Too strict marking scheme for style.
and there should still be second chances on assignment in the future. also, the interface part, putting static and extern is really confusing... Hope more about that could be explained...
- Way too heavy near the end of the course
Was the class atmosphere affected either positively or negatively by attitudes of the instructor or students, e.g., with respect to gender, race, ability, appearance? Please explain. |
- All good.
- Atmosphere was very good. Dave even made a section of the class for those who don't want to talk to others
- He's supper accepting, if anything was affected it would be positively.
- It was affected positively by the enthusiasm of the teacher.
- It was good.
- My section was nice as everyone has so many doubts which were explained in depth by dave which in turn helps to learn this course better.
- n/a
- No
- None
- Not really except when talking about ASCII Dave said something about how it was invented by "old white guys" which is why no foreign letters could be stored in ASCII. Got the feeling he was trying to make international students in his class comfortable? But it was weird. Just don't make reference to gender or race in class at all, ever. (btw I'm Chinese, not some offended white person).
- Positive!
- Positive. Everything is good
- Positively, instructor occasionally brought up the topics but never in a way that could be framed negatively.
- Positively. Dave seems like a happy guy and I like how he shows a video everytime beforeclass.
- postively
- The class was ok. It was hard to read some of the annotations at times.
- Very positive. Dave is super respectful and positive.
Any other comments, e.g., class size, suitability of room, noise level, etc. |
- All good.
- Class was pretty crowded, could have had a little bigger room for the class size.
- Everything seems to be at the right amount.
- integrity statement is useless!!!!! fake news! sad! system needs to be changed IMMEDIATELY...
i honestly don't care but I have to fill that out every question and that gets annoying
- Like the wall desmonstruction on memory bytes
- N/A
- None
- Nope
- The class was way too crowded and the room was smaller. they should change the rooms to either the QNC one's or the STC rooms.
- Well his lectures are always full so maybe give him bigger rooms so the class doesn't feel as packed?