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 / 72 (74%)
Evaluate the organization and coherence of the lectures. |
Excellent | Good | Satisfactory | Unsatisfactory | Very poor | No opinion |
33 | 15 | 3 | 1 | 1 | |
62% | 28% | 6% | 2% | 2% | |
At what level were the instructor's explanations aimed? |
Too high | Somewhat too high | Just right | Somewhat too low | Too low | No opinion |
2 | 10 | 39 | 2 | | |
4% | 19% | 74% | 4% | | |
Evaluate the instructor's treatment of students' questions. |
Excellent | Good | Satisfactory | Unsatisfactory | Very poor | No opinion |
34 | 14 | 4 | 1 | | |
64% | 26% | 8% | 2% | | |
Evaluate the effectiveness of the instructor's visual presentation (blackboard, overheads, etc.). |
Excellent | Good | Satisfactory | Unsatisfactory | Very poor | No opinion |
34 | 15 | 3 | 1 | | |
64% | 28% | 6% | 2% | | |
Evaluate the effectiveness of the instructor's oral presentation. |
Excellent | Good | Satisfactory | Unsatisfactory | Very poor | No opinion |
39 | 11 | 2 | 1 | | |
74% | 21% | 4% | 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 |
24 | 9 | 8 | 2 | | 10 |
45% | 17% | 15% | 4% | | 19% |
Did you find the course interesting? |
Very Interesting | Interesting | Not interesting | No opinion |
25 | 23 | 3 | 2 |
47% | 43% | 6% | 4% |
Evaluate the overall effectiveness of the instructor as a teacher. |
Excellent | Good | Satisfactory | Unsatisfactory | Very poor | No opinion |
33 | 16 | 3 | 1 | | |
62% | 30% | 6% | 2% | | |
What proportion of lectures did you attend in this course? |
90-100% | 75-90% | 50-75% | 25-50% | < 25% |
41 | 5 | 4 | 3 | |
77% | 9% | 8% | 6% | |
Was the assigned work (assignments, projects, etc.) helpful in learning the course content? |
Very helpful | Helpful | Not helpful | No work assigned | No opinion |
34 | 16 | 1 | | |
67% | 31% | 2% | | |
Were the printed notes (if any) helpful in learning the course content? |
Very helpful | Helpful | Not helpful | No printed course notes | No opinion |
17 | 25 | 3 | 7 | |
33% | 48% | 6% | 13% | |
Was the required textbook (if any) helpful in learning the course content? |
Very helpful | Helpful | Not helpful | No text required | No opinion |
6 | 11 | 4 | 29 | |
12% | 22% | 8% | 58% | |
Did the course introduce an appropriate amount of new material? |
Too much | Somewhat too much | Okay | Somewhat too little | Too little | No opinion |
6 | 17 | 29 | | 1 | |
11% | 32% | 55% | | 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 |
14 | 23 | 15 | 1 | | |
26% | 43% | 28% | 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 |
| 2 | 19 | 19 | 13 |
| 4% | 36% | 36% | 25% |
Evaluate the organization and coherence of the lectures. |
- [Excellent] Dave was really passionate about the material and he is one of the best teachers in my entire study adventure
- [Excellent] I really like the lectures. Those explanations make me think and understand things. It's easy for me to pay attention almost the whole lecture.
- [Good] We went through binary search trees too fast
At what level were the instructor's explanations aimed? |
- [Somewhat too high] Definitely not too high though.
Evaluate the instructor's treatment of students' questions. |
- [Excellent] Great at this.
- [Satisfactory] You seem disinterested in most office hours. You stare off to space or you're organizing your shelves. It made me feel like you don't care about the questions that I have to ask.
Evaluate the effectiveness of the instructor's oral presentation. |
- [Excellent] You are a really good speaker, with great explanations in class.
Did you find the course interesting? |
- [No opinion] I find the C language is kind of annoying. I prefer python. But I understand that by learning C we can learn about what's going on behind the scenes.
Was the assigned work (assignments, projects, etc.) helpful in learning the course content? |
- [Helpful] helpful but really difficult
- [Very helpful] but the weight that is taking is not a good representation of what it should represents
- [Very helpful] The comment is only applicable from my point of view and I am no one to comment about the assigned work so I will speak from my side.
The assignments were helpful but I would rather prefer group work.At the end of the day, I think working individually makes me unhappy and depressed. My favourite part of the course was when Dave told us to discuss with our peers to design an algorithm. I believe as human beings we should interact with one other more often especially waterloo students. Moreover, I took this course just to learn new content but after the midterm I went into severe depression even though I could do the assignments and understood the contents well enough.
Were the printed notes (if any) helpful in learning the course content? |
- [Not helpful] The printed notes were different from the slides. I felt like my printed notes were obsolute.
Was the amount of assigned work required for the course appropriate? |
- [Somewhat too much] First few assignments had too little work, last few had too much
- [Somewhat too much] Some assignments were quite long.
- [Too much] Assignments are too long and most of the times tricky. It would be helpful if there were more hints for some questions.
- [Too much] assignments long
On average, how many hours per week did you spend on this course outside of lectures? |
- [> 15 hours] Again, assignments are too long. The main reason is that most of the gold questions are not difficult themselves once you already know the material, but they require a lot of time to figure out if you are not already proficient with the topics. That's why, more helpful hints would be useful. Also, having tutorials before the weekend would have helped me a lot. Tutorials do deepen the content seen in class. Most of the times I have been stuck in a question, the tutorial's ISA has explained very clearly the concept in another exercise, helping so to understand me such concept.
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. |
- Dave made the course interesting and engaging even though the course material was dry at times. Overall his explanations were easy enough to follow and he was willing to explain things again when asked to do so.
- Dave speaks very clearly and cares about students. He has a good sense of
humor. He is knowledgeable and affable , and we all respect him very much.
- Dave Tompkins is a phenomenal instructor. I never loved CS and it was always a pain point for me. However, leaving Dave's lectures I was rarely confused and often genuinely excited about the material I had learned. He truly cares about the success of his students and it shows.
- Dave you're an excellent teacher. You really made me super interested in the course. Don't worry, you're not "overrated" and I you're one of the most engaging, dedicated and knowledgeable professors I have had.
- Everything
- explain new materials
drawing diagrams is really helpful
- Good explanation for pointer heap
- Great explanations, good at engaging class
- Great lecturer; passionate and engaging. Definitely made it fun to come to class.
- Great presenter. He can grab everyone’s attention easily with his funny jokes. Btw he is not overrated.
- He encouraged students to ask questions in the class.
- I loved his analogies and his connections to real world examples. It made understanding the concepts easier.
- I really like the lectures.
- Lectures are amazing.
- Nice instructor, nice lectures,
- nice joke
- nice prop!
- Organizing course content
- Prof Dave controlled the progress of course content appropriately. He is learned and humorous!
- Prof. Tompkins was an absolutely wonderful lecturer, and he made an effort to make every lecture interesting
- Sometimes the instructor can use some interesting examples to explain the question more clearly.
- well explanation about all the contain in the course.
- You were fun. I enjoyed being in your class.
- Your costume for Halloween is great :D
Please make constructive comments about anything in the instructor's technique or style that could, in your opinion, be improved. |
- 1. Assignments: I get that it is necessary to have assignments every week so that we understand the concepts better. Bu t I said this on Piazza and i'll say it again, You HAVE to give us the option of dropping at least one assignment. They take up a lot of time, and there are certain weeks when it is just not possible to complete them. SO having the option to drop one would be bless
2. Exams: I know you're against practice problems but from past CS courses, I can tell you that they do help. While studying for the midterm, I just didn't know what I should practice
3. Exam Average: You gotta start releasing that. I know the average was pretty low, maybe that's why you didn't want to release it, but it helps EVERYONE in the class understand where exactly they stand. Don't come up with rubbish like "research suggests average don't do anything good".
3. Exam Pt. 2 : you cannot have such long questions like zig zag and boundary on the exam. There just isn't enough time to think. You have to give questions who's answers can be thought of within a few minutes. Also have few more theory based questions (multiple choice, predict the output) Leave code for the assignments, exams is just about testing
- easy final and easy mid please
- I do not think watching a movie before the class is helpful at all. Instead of watching a movie, I would prefer seeing more examples in class, delving more into the course's content and having shorter assignments.
- I like your style, your are the best prof
- I really wished you gave us practice questions for the midterm. It's so difficult to practice for the midterm by going through slides and making up my own questions. Those study methods are limited by the things I know and my own creativity, which may be different from what is actually expected of me.
- I think he's fine.
- It would have been better if more time was spent in binary search trees
- lower the level of difficulty of assignments or midterms a bit
- Maybe exams should be shorter. I feel exhausted writing the exam.
- more office hours
- more practice questions, especially the ones for paper coding.
- Nope
- Nothing I can add.
- Overall the course was well-paced, but it would be slightly more helpful if he took a little extra time on stuff like sorting and pointers..with a few more examples.
Also I would have liked to see some more advanced/real-life applications since that would make the course material more interesting.
But there is very little I can suggest to improve on since Dave is an excellent teacher
- Packed more into pre midterm, slow down more after midterm. Assignments are also very time consuming
- Please! Please! Decrease some materials or amount of work we have to do in assignments. There are some really important points that the instructor should have talked about but in fact he didn’t. Which made our assignment more challenge.
- Some concepts were introduced a little too quickly (like pointers). The pace of the course slowed a lot towards the end, however.
- Sometimes spent too long re-capping lecture from last lecture (but wasn’t really a significant issue).
- The instructor can spend more time during lecture to emphasize more on the key points.
- the man is good at what he does
- Very interesting
What were the strong points of the course? |
- Awesome assignment questions. The process of figuring out them was really exciting.
- Good at introducing medium sized programs and imperative programming
- I have learned a lot, even if learning the content for the first time can be difficult and very time-consuming.
- I know this would be tough work for an instructor to do all the stuff (designing the notes, designing the assignments, teaching the course, designing the midterms and exams. The instructor was accountable.
- Important and relevant material
- interesting
- Introduces c and talks about the memory, pointers.
- It’s a very useful introduction course for some ‘real’ CS concepts and ways of minds
- Learning imperative programming, applicable to the real word.
- more understand how c language works
lay a foundation for future cs courses
- NICE PROF, Nice TA
- pacing
- Pointers I thought were taught really well this term. I picked them up quickly.
- teaches a very useful program
- Teaching many things that's behind the scenes.
- The course included a decent amount of new material and I found the assignments crucial to understanding the course material.
- The ISA is super important, two ISAs we have this term are the best. They helped us a lot!!!!!! Give them credit!!!
- This course helped me improve my skills as a programmer, especially in debugging. It introduced lots of interesting material and cemented my interest in computer science.
- Unpopular opinion: the assignments are fine. Too many people don't start it early enough, are too lazy to read through piazza before asking questions. Assignments are always the best way to learn how to program.
What were the weak points of the course? |
- A lot of the stuff was review (liked linked lists) from cs135
- Assignments are difficult
- DEFINITION OF KEY TERMINOLOGY should be emphasized more!!! MORE EXAMPLES SHOULD BE GIVEN FOR THOSE DEFINITION AND HOW TO USE THEM WHILE CODING.
- Doing all of your assignment questions by your own, and scoring well in them doesn't guarantee high marks in exams.
Need practice questions for exams.
- Everything perfect
- Exams require you to think about so many things in the limited time to answer every question.
- For learning this course well, too much time should be put in it.
- heavy workload
- I will try to be brief:
- Assignments are too long and time-consuming, as explained before
- Tutorials should be on Fridays just like CS115 or CS116. We would have more time to reflect on the content and would save us a lot of time for assignments
- Not enough examples. The few examples provided in the notes have been very useful to do assignments.
- There should be either more office hours or more TA's available, for example on Mondays or Tuesdays. Office hours on Wednesdays are incredibly full.
- I learned a lot in CS115 & 116 by reading the assignments' solutions. I do not understand why full solutions are not posted. If I am stuck on a question and there is no way I can figure it out after the deadline has already passed, how am I supposed to learn? Office hours is not really an answer since they are most of the times overcrowded.
- Why do not we have any practice problems for each section just like there was in CS116? These would serve for additional practice and would help us deepen the content.
- We should have taken the midterm at least one week earlier, in order to have more time to assimilate post-midterm material.
- We should have started doing assignments earlier, so that we would have more time for Assignment 9.
- Please, for future course offerings, do not encourage using Seashell. It gets blocked a lot of times. (I spent a whole day without being able to do some questions for assignment 6). It wasn't because there were people working on it, i.e. that day was the math semi-formal.
- It was difficult to study for the midterm or final efficiently.
- Long assignments
- midterm was hard
- might have a lot of new knowledge to take in
- Second half of the course introduces way too much content
- The assignments do get difficult as the course ramps, but no weak points just have to stay on top of it.
- The assignments were lengthy, quite difficult, and sometimes just exasperating. Granted, I don't consider myself to be the best programmer, but I found that I'd occasionally run into these random, insurmountable obstacles . The lab hours always helped, but I found that going to them might have made me a little too accustomed to relying on outside help.
- The contents was too much, and some important points were not taught enough. For example: the instructor needs to spend more time on the “pointers to pointers” or Heap and Stack overflow, pointers to arrays, pointers to struct. etc. Since those appeared on the assignments for multiple times. If students could not understand what they should do, they will never find out what was the problem in the codes they wrote and how to debug them. There was one time that I met an error on my code which said “Heap overflow”. I asked the TA and TA and I spend a whole hour on the codes to find out which part caused the problem. And before that, I have already spent a lot of time on the question. I am not a very clever student, but I love programming and I love cs. I have other challenging courses as well, spending more than 15 hours on cs assignments and still not able to figure out is too much for me. I wish I can spend all my time on cs to solve more interesting problems, but the reality is I don’t have time. And I am not so clever to finish all the problems in 15 hours. And the consequence is that this course shows how stupid I am. My average on the assignments did not pass 50. I might fail.
- The course required us to spend too much time on assignments to do well and that is extremely hard to do while taking other demanding courses.
The midterm was too long as writing code on paper is way different from coding on a computer with an IDE like Seashell and it does not accurately represent your programming skills/understanding of lecture.
I feel I understood the material way better than my midterm marks represent, but due to the midterm being too long I didnt do as well as I could have.
- the length of assignments
- too little practice questions and I did not have the chance to reinforce the concepts.
- Wish we had more time at the end with ADT’s (more examples and more lecture time) because it’s definitely the most difficult topic in 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. |
- -
- Dave Tompkins was extremely respectful of everyone. He’s a class act and not just a good prof, but a great person.
- He treats everyone equally and often uses general neutral pronouns in his jokes.
- it was nice
- It was positive.
- N/A
- No option
- Not affected.
- positive
- positively, Prof. Tompkins was very nice
- Positively. Dave is always very inclusive and supportive.
- postively
- Super positive. Dave is just great.
- There was no discrimination
Any other comments, e.g., class size, suitability of room, noise level, etc. |
- -
- Dim lights were a bad choice. My eyes are bad and I have to strain to see the board.
- Good classroom.
- just right.
- Liked the movie.
Didnt get to do meme contest :(
- N/A
- No comment.
- none
- Nope
- Thank you for a wonderful term. This class (although one of my most difficult) made me smile.
- The room is so hot.
What is now an expected tradition, I showed 5 minutes of a movie before each lecture. This term the students voted for How to Train Your Dragon: The Hidden World (Sec 001), The Secret Life of Pets (Sec 002) and Smallfoot (Sec 003).