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: 57 / 78 (73%)
Evaluate the organization and coherence of the lectures. |
Excellent | Good | Satisfactory | Unsatisfactory | Very poor | No opinion |
40 | 13 | 2 | | 1 | |
71% | 23% | 4% | | 2% | |
At what level were the instructor's explanations aimed? |
Too high | Somewhat too high | Just right | Somewhat too low | Too low | No opinion |
1 | 5 | 47 | 2 | 1 | |
2% | 9% | 84% | 4% | 2% | |
Evaluate the instructor's treatment of students' questions. |
Excellent | Good | Satisfactory | Unsatisfactory | Very poor | No opinion |
36 | 18 | 1 | | | 1 |
64% | 32% | 2% | | | 2% |
Evaluate the effectiveness of the instructor's visual presentation (blackboard, overheads, etc.). |
Excellent | Good | Satisfactory | Unsatisfactory | Very poor | No opinion |
39 | 13 | 3 | | 1 | |
70% | 23% | 5% | | 2% | |
Evaluate the effectiveness of the instructor's oral presentation. |
Excellent | Good | Satisfactory | Unsatisfactory | Very poor | No opinion |
49 | 6 | 1 | | | |
88% | 11% | 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 |
16 | 13 | 9 | 1 | | 18 |
28% | 23% | 16% | 2% | | 32% |
Did you find the course interesting? |
Very Interesting | Interesting | Not interesting | No opinion |
30 | 25 | 1 | |
54% | 45% | 2% | |
Evaluate the overall effectiveness of the instructor as a teacher. |
Excellent | Good | Satisfactory | Unsatisfactory | Very poor | No opinion |
47 | 9 | | | 1 | |
82% | 16% | | | 2% | |
What proportion of lectures did you attend in this course? |
90-100% | 75-90% | 50-75% | 25-50% | < 25% |
48 | 9 | | | |
84% | 16% | | | |
Was the assigned work (assignments, projects, etc.) helpful in learning the course content? |
Very helpful | Helpful | Not helpful | No work assigned | No opinion |
39 | 17 | 1 | | |
68% | 30% | 2% | | |
Were the printed notes (if any) helpful in learning the course content? |
Very helpful | Helpful | Not helpful | No printed course notes | No opinion |
31 | 18 | 2 | 2 | 4 |
54% | 32% | 4% | 4% | 7% |
Was the required textbook (if any) helpful in learning the course content? |
Very helpful | Helpful | Not helpful | No text required | No opinion |
12 | 9 | 7 | 10 | 18 |
21% | 16% | 12% | 18% | 32% |
Did the course introduce an appropriate amount of new material? |
Too much | Somewhat too much | Okay | Somewhat too little | Too little | No opinion |
| 11 | 44 | 1 | 1 | |
| 19% | 77% | 2% | 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 |
| 23 | 33 | 1 | | |
| 40% | 58% | 2% | | |
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 |
| 8 | 36 | 10 | 3 |
| 14% | 63% | 18% | 5% |
At what level were the instructor's explanations aimed? |
- [Just right] Funny analogies were made.
- [Too low] we learned a whole bunch of stuff. you always said you don't have to know this... but then what was the point of learning it?
Evaluate the effectiveness of the instructor's visual presentation (blackboard, overheads, etc.). |
- [Excellent] good level of switching between using slides and blackboard.
- [Excellent] Thank you for teaching pointers on the board like a boss.
- [Excellent] You use a lightsaber as a pointing stick and you've got an "Excellent" from me here.
- [Very poor] i couldn't follow you when writing on the chalkboard
Evaluate the effectiveness of the instructor's oral presentation. |
- [Excellent] Very engaging.
Was the instructor available for help outside of class? |
- [Always] Very responsive on piazza.
Did you find the course interesting? |
- [Interesting] Interesting topics but some weren't for me.
- [Very Interesting] I definitely love the course and it helped me a lot.
Evaluate the overall effectiveness of the instructor as a teacher. |
- [Excellent] One of my favourite CS prof at UW.
Was the assigned work (assignments, projects, etc.) helpful in learning the course content? |
- [Helpful] Some assignments were too long
- [Helpful] Some of the assignment questions were not very clear on how they would interact with base cases (ex. empty string, EOF, no input), specifically the questions dealing with reading in chars.
- [Very helpful] Some assignments might have been a bit long but they were very useful.
Were the printed notes (if any) helpful in learning the course content? |
- [Very helpful] Bless these lecture slides.
Was the required textbook (if any) helpful in learning the course content? |
- [No opinion] Other than the course note I didn't look into the textbook. I did use some more online resources to look into memory management more but never used the textbook.
Was the amount of assigned work required for the course appropriate? |
- [Okay] Good in the beginning, workload got fairly heavy in the end
- [Okay] Really enjoyed working on the bonus questions. Please make more!
- [Somewhat too much] But that is just my feeling toward the end of the course. I think the amount of work is fine but the time crunch gets to be somewhat more serious as the difficulty rises.
- [Somewhat too much] The assignments grew in length very quickly.
On average, how many hours per week did you spend on this course outside of lectures? |
- [11-15 hours] That assignment 9.
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 in a good mood and telling jokes
-Somehow still alive after drinking all that coke zero (nice!) :)
-Uses both the blackboard and the slides to convey meaning effectively
-Always explains everything to a high degree of understanding
- answer every questions during class
- Communicated concepts very clearly
- Coordination of the whole course was very good. Loved how everything was done in a way that it's properly directed for beginner level CS students, and the explanations were just downright proper
- Dave had good explanations for the more abstract concepts we learnt and his jokes made them more memorable. The lecture modules had a natural progression and built on top of previous content we had learnt already.
- Dave is exceptional at explaining a topic in as a simple way as possible without losing people who have programmed before's attention. It makes for an interesting and engaging class where you guaranteed to learn something.
- Did a really great job at explaining the theory behind what we were learning and why we were learning it. Related what we were learning to the real world so that we could see the practical uses for what we were learning and it helped us better understand the material.
- Effective use of examples to demonstrate course concepts (i.e. using the bricks on the wall).
- Engaging and well explained
- Entertaining lectures to keep it interesting
- Everything is perfect.
- Everything, amazing teacher overall.
- Explained difficult concepts straightforward.
Very engaged in the class
- Explanation is easy to understand and jokes help concentrate.
- Good jokes that made material interesting
- Great at engaging students
- Great explanations.
Good communication.
Personable.
Practical examples and analogies are great, due more of these.
- Great visual explanation of complicated cs concepts
- He always takes very funny examples in his lecture
- His jokes and just his vibe bring me to class everyday otherwise I'd be at home crying trying to learn by myself
- I really like the way he taught us. Honestly I think teaching CS is not a easy thing, because it is all about machine, in some way, it's kind of bored. although I truly like this CS,but I found that The previous CS courses I took just made me feel so sick. Before dave's class I just feel the enjoyable part of CS is doing the assignment. What a ....! But Dave's class is very interesting and i really enjoyed attending his class and listening to his teaching.
- "interesting" examples
- Keeping the students engaged throughout each lecture
- Made the class fun and enjoyable
- Made the lectures very interesting and did an amazing job at explaining all the material. Thank you for an amazing term!
- No complaints
- Pointers
- presentation is impressive
- Pretty much everything.
- sometime i dont understand what is saying
- THE BEST professor i've ever had, no doubt. Great dynamic in lecture. Interesting, funny and helpful professor. I really like the way you teach, and also those extra, beyond-the-course information about computer and programming, which give me a better overview of the whole computer science world. Overall, YOU MADE A SUPPOSE-TO-BE BORING COURSE INTERESTING AND ENJOYABLE! P.S. !!!REEEEEALLY hope that I can see you in other computer science course, too. PLEASE!!!!
- The examples are great and helpful!
- The material was presented really clearly, and it was obvious that you have a passion for statistics that really shines through to help engage the students.
- The prof uses metaphors to help students understand the concept better.
- using bricks as examples.
- Very engaging. Nice examples and analogies. Great presentation. "Unique" sense of style.
- Well explanation of course material
- you made me laugh, that's all
Please make constructive comments about anything in the instructor's technique or style that could, in your opinion, be improved. |
- Dave, you are a good joke teller, but can you tell us something new?
- Drink less coke
- Especially near the end of the term, class often went overtime and was rushed near the end.
- Excellent.
- explain clicker questions clearlier
- Feel that we did not need to spend as much time as we did on some of the earlier content.
- Go a little slower for some of the harder materials in class.
- If you did more board examples that would be great.
Maybe you could create a space/time for asking questions in class. Although this may be more up to the students. Some of your lectures have a lot of content, others have less. Try and balance your content quantity more.
- Include more steppers or animations in class
- More visuals in class and in course notes
- N/A
- Not much to be improved, but in some cases, I believe it's better to include more pointer diagrams on the notes. Dave explains them on the blackboard quite nicely, but I feel like having more slides explaining them would be better
- Nothing can be better. He as an instructor was perfect. Just the long assignments near the end of the term was a pain. Maybe he can space them out?
- Nothing, Dave is awesome
- Nothing. Don't change, Dave.
- please add a little bit more examples and digraphs etc. either on the slides or on the board along with the material that would be very helpful.
- Professor could improve in use of chalkboard writing clarity.
- - Provide an outline/structure of what will be on the midterm (ex. covered the C memory model in depth but was not asked any questions on it).
- Share some Coke Zero.
- slow down a little bit and give some hit about the assginment
- Some assignments were too short and some were too long. Would rather have assignments of a consistent length.
- Sometimes does long pauses that makes me lose focus
- Sometimes in reviewing the previous class you drag on a little long and I tune out a little, but I understand why it's done.
- Sometimes the slides get really dry and makes sleeping very easy
- spend more time on difficult stuff and less time on straight forward concept.
less clicker recently? I think clicker is such a good way to keep track of if students understand and to adjust speed. we should have more clicker after the midterm, since the material is harder.
- Stay funny
- The midterm is nothing like the previous ones. I did spend a million years on the definitions, but not really appeared on the paper tho.
- The teaching style is wonderful. Drawing on top of the notes, using the bricks on the wall to learn about memory, drawing on the chalkboard and using stuff in the classroom makes understanding new topics very easy.
- Too many jokes sometimes.
Wore a creepy smile when I asking questions.
- Use more examples on how to implement the code that we are learning about. Did a great job at explaining what we were learning and how it worked but when it came time to do the assignments, I felt like I didn't really know how to do them. For example, when learning pointers I knew exactly how they worked and what they did, but on the assignment, I didn't know how to use them because we didn't see enough actual code examples with pointers.
- your chalkboard work is very confusing, perhaps use some other tool? the thing with the self balancing tree was very helpful
What were the strong points of the course? |
- Attractive
- Basic concepts of C
- C
- Dave is a great prof!
- Dave, Dave's jokes, C, linked lists, good explanations of somewhat difficult concepts
- Deeper conversation about algorithm and a new way to approach a question using abstract data type. Really great preparation for later-on object-oriented programming.
- Definitely the presentation of the notes in class and how new topics and problems were presented.
- Dynamic memory.
- good level of information delivered
- Good Teaching
- help develop logic and being creative
- Helpful in the development of cs skills.
Great TAs and excellent support.
- Intro to c
- Learned a lot of useful techniques that are applicable to the real world.
- Many examples and jokes throughout the course made it fun and entertaining
- new fresh material
- practice
- Pretty much all of it was gr8 m8 8/8. no h8. never L8.
- Professor
- Really nice course to learn imperative programming.
- Teaches the fundamental ideas about computer science.
- The constant testing (iClickers, assignments, and tests) were very good preparation for the midterms and (I assume) the exam, and the different formats of the constant testing appealed to different types of learning.
- The lectures were entertaining and the material is interesting.
- The visual presentation.
- The way it hammers down everything going for memory allocation
- understand how coding works behind the scene
- useful and interesting
- Useful knowledge to apply outside the class
- Useful materials that engaged me to continue my study in CS
Also, Dave usually give us free clickers and active result so that I can bush my clicker mark, that's the same reason why I want to do this evaluation.
- Was interesting and seemed like I learned stuff that I will actually use in the future.
What were the weak points of the course? |
- After the midterm the material got really difficult and new material was introduced at a much faster pace than before the midterm.
- Allow for more creativity in applying the course material. Assignments should have more weight since they require so much work. I know plagiarism is a concern but try operating with more trust.
- "fair" to be tested on Racket even though most of the class was taught in C. Made me study for a good amount of Racket on my own since I have transferred into UW.
- Found that assignments were sometimes not clear about what to expect for certain edge case testing scenarios. Found that a lot of questions on Piazza were basically "what should ___ output". Would have been interesting if we were provided with the interface of the solutions with the implementation hidden from us (something similar to what was done with readchar and readnat in the earlier assignments) so that we could freely run the program to experiment with different inputs to help build our own code without giving us the solution.
- hard
- Hard
- linked lists, trees, and stuff around those modules. you skipped a whole bunch of clicker questions.
- Need more examples for malloc with arrays of strings. I had a really hard time with that :(
- No.
- None really, just wish there were more moments in class where the students can discuss with one another about clicker questions and such. With the format of the course it made me feel somewhat isolated. But this isn't that something that hurt the overall course.
- Not very well balanced, in terms of difficulty of assignments and exams
- please introduce more design part, it's interesting to learn and essential for later-on programming choice.
Also, still think racket part is a little bit too much, especially in the beginning part of this course, like introduction of adt etc., which, for me, can understand better in c. P.S. also, NOT ENOUGH DAVEEEE!!!!)))
- Pointers are really painful, as are structures with arrays... Aka assignment 9... But the class itself was always fun to attend :)
- POINTERS KILL ME
- Pointers. If you want to change ANYTHING, I would want a clearer explanation and perhaps more time spent on pointers. Everything from declaring a pointer to arrays of strings/structs/pointers. They confused me quite a bit on some assignments.
- Restricted many techniques at beginning
Some assignment question are tedious and useless
- Some assignments need to spend huge amount of time but only worth a little portion of grades
- Some of the assignment questions were unclear and confusing.
- Sometimes the assignments were very heavy in terms of content, however there were many examples in the labs that helped me to understand.
- speak not quit clearly
- The assigned preparation material for the constant testing often overlapped, and students weren't informed of this near the start of the course, so when students were assigned the same question set 3 or 4 times, it was no longer helpful as we can remember the answers and are no longer challenged.
Possible solutions:
1. Informing the students in advance that the problem sets will be reused and how many times so that they can split up the questions as they see fit.
2. The instructors splitting up the assigned question sets (e.g. only odd for the first time its assigned, only even the second time).
3. Create/give students access to more problem sets
- The assignments should be designed a bit more based on understanding popular algorithms, like I wish i understood merge sort, quick sort, etc and the other which include binary sort, much better by doing assignments, and also the last content, trees and linked lists are going just amazing, I just wish i could've worked more on them. We did a whole lot of array based questions, but they're not as fun as the lists, ADTs, and tress etc
- the atmosphere of the room (dim, quiet), made it too easy to fall asleep randomly
- Too basic
- Too Much work near the end, especially with every other class pushing hard
- Well, C has too many restrictions compare to python that I learned in CS 116
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 isa and instructors are great
- good
- Good
- Good
- It was not affected negatively to my knowledge, there were no negative comments from Dave or students that I was aware of.
- N/A
- N/A
- N/A
- N/A
- Nah.
- No
- Nothing negative from what I have noticed and experienced over the semester. Everyone was inclusive and I did not feel like anyone was affected negatively with respect to gender, race, or appearance.
- positive
- Positive
- positive class atmosphere given off by prof
- Positive!!
- positive. i dont feel anything uncomfortable
- Positively
- positively
- Positively by attitudes of prof
- Positively influenced by professor
- Positively, Dave stands against the depressing Waterloo as a upbeat instructor
- Students are mostly willing to participate and discuss.
- There's literally nothing to say here,
- very good
Any other comments, e.g., class size, suitability of room, noise level, etc. |
- bigger tables
- Classroom was a bit dull
- Dave4Pres 2020
- Encourage more drawing of algorithm
- good size
- Great prof
- I've had Dave for CS 135 and (un)fortunately twice for CS 136 and I can say with utter confidence, Dave is the professor you need for CS. He is super engaging, helpful and really cares if the student's understanding the content being presented. Personally, if I weren't in Dave's section I would sacrifice my clicker grade to attend his lectures. DAVE, it's been a pleasure being your student!
- If we change to a bigger room, that will definitely help.
- just right!
- just right.
- N/A
- N/A
- N/A
- N/A
- N/A
- No comment.
- None.
- ok
- Size is okay but the classroom is not friendly to the seats in the back.
- Sometimes [NAME REMOVED] could be a bit distracting in the back of the room but I didn't wanna cockblock.
- Teacher didn't close door during his lectures.
- The classroom was good, I prefer classes in MC on the second floor because they have windows and feel less claustrophobic
For the first time, I was teaching all of the sections of CS 136. The freedom from section coordination was quite liberating. I was able to make some improvements to the lecture notes "on the fly". While the changes were well received, it did frustrate the students who purchased the printed notes at the beginning of the term.
I managed to introduce (mostly) new assignments, and since I was the sole author, I was very happy with their quality. Some students complained about the difficulty and/or length of the assignments, but the complaints were mostly because the Fall term tends to be comprised of weaker students or those that were accustomed to assignments from CS 115 & CS 116. I experimented with granting more "second chances" this term, which really helped those students struggling to solve some of the harder assignments.
For the first time, I designed all of the tutorials. By designing both the assignments and the tutorials I was able to improve their synchronicity.
I continued my popular tradition of showing 5 minutes of a movie before each lecture. This term the students voted for The Iron Giant (Sec 001), Wall-E (Sec 002) and Monsters, Inc. (Sec 003).