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: 76 / 103 (74%)
Evaluate the organization and coherence of the lectures. |
Excellent | Good | Satisfactory | Unsatisfactory | Very poor | No opinion |
64 | 11 | 1 | | | |
84% | 14% | 1% | | | |
At what level were the instructor's explanations aimed? |
Too high | Somewhat too high | Just right | Somewhat too low | Too low | No opinion |
1 | 6 | 66 | 2 | | 1 |
1% | 8% | 87% | 3% | | 1% |
Evaluate the instructor's treatment of students' questions. |
Excellent | Good | Satisfactory | Unsatisfactory | Very poor | No opinion |
56 | 17 | 3 | | | |
74% | 22% | 4% | | | |
Evaluate the effectiveness of the instructor's visual presentation (blackboard, overheads, etc.). |
Excellent | Good | Satisfactory | Unsatisfactory | Very poor | No opinion |
53 | 17 | 5 | | | 1 |
70% | 22% | 7% | | | 1% |
Evaluate the effectiveness of the instructor's oral presentation. |
Excellent | Good | Satisfactory | Unsatisfactory | Very poor | No opinion |
65 | 11 | | | | |
86% | 14% | | | | |
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 |
18 | 18 | 7 | | | 33 |
24% | 24% | 9% | | | 43% |
Did you find the course interesting? |
Very Interesting | Interesting | Not interesting | No opinion |
40 | 31 | 3 | 2 |
53% | 41% | 4% | 3% |
Evaluate the overall effectiveness of the instructor as a teacher. |
Excellent | Good | Satisfactory | Unsatisfactory | Very poor | No opinion |
66 | 9 | 1 | | | |
87% | 12% | 1% | | | |
What proportion of lectures did you attend in this course? |
90-100% | 75-90% | 50-75% | 25-50% | < 25% |
65 | 5 | 5 | | |
87% | 7% | 7% | | |
Was the assigned work (assignments, projects, etc.) helpful in learning the course content? |
Very helpful | Helpful | Not helpful | No work assigned | No opinion |
31 | 41 | 3 | | |
41% | 55% | 4% | | |
Were the printed notes (if any) helpful in learning the course content? |
Very helpful | Helpful | Not helpful | No printed course notes | No opinion |
22 | 30 | 4 | 13 | 7 |
29% | 39% | 5% | 17% | 9% |
Was the required textbook (if any) helpful in learning the course content? |
Very helpful | Helpful | Not helpful | No text required | No opinion |
6 | 24 | 6 | 4 | 35 |
8% | 32% | 8% | 5% | 47% |
Did the course introduce an appropriate amount of new material? |
Too much | Somewhat too much | Okay | Somewhat too little | Too little | No opinion |
4 | 14 | 50 | 6 | | 2 |
5% | 18% | 66% | 8% | | 3% |
Was the amount of assigned work required for the course appropriate? |
Too much | Somewhat too much | Okay | Somewhat too little | Too little | No opinion |
11 | 34 | 30 | 1 | | |
14% | 45% | 39% | 1% | | |
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 |
1 | 18 | 29 | 22 | 6 |
1% | 24% | 38% | 29% | 8% |
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. |
- Adapts the 'no child left behind' policy pretty well. Isn't boring & doesn't suck. I'm going to rate him ***** on ratemyprofessor.com
- Attitude.
- Best prof ever!
- Clear explanations. Showed plenty of examples and actual coding in class to show concepts.
- Clear, loud, concise.
- Communication of ideas. Very clear and understandable in lectures. Lectures were very engaging.
- Constantly paused for student questions and answered them clearly.
- Dave does a good job trying to keep the environment upbeat and interesting throughout the dry sections of the course material.
- Dave does a great job keeping the class atmosphere light and enjoyable, while teaching extremely well.
- Dave is a very humourous and relatable instructor. He is very passionate about teaching, and that shows every class. I occasionally have felt intimidated to ask a stupid question in class, and I wish there were more code examples with walk-throughs, but that's more related to the course than Dave. I would not hesitate to take a class with Dave again.
- Dave is an extremely dedicated professor. Even with the arrival of his baby, he has put in the time and effort to make this course one of the most interesting courses I've ever taken. Keep up the great work!
- Dave made the class really fun. He's really funny and delivers boring content really well.
- Dave's lecture style was quite engaging and very well organized.
- Done a great job with the lectures and they were very interesting.
- Engages the class, makes the course extremely interesting. Probably the reason I changed my major.
- Engaging lectures. Very good treatment of student questions, from the 'am I stupid' kind to the keener questions.
- Enthusiastic presentation of material. Fun pre-class tangential videos, effective explanations of complicated material in an intuitive way.
- Everything, fantastic teacher made classes/course very enjoyable. I would not have wished for a better lecturer for computer science.
- Excellent. Clear explanation, very helpful. Overall, the class was fun.
- Explain problems clearly.
- Explained difficult topics clearly and in depth. Answered student questions well.
- Explained things well, very interesting made me actually want to learn CS.
- Explaining confusing concepts. Brings interest.
- Friendly, good at teaching difficult concepts.
- Funny, enthusiastic, answers questions well. AMAZING.
- Funny. Provides good explanations to concepts.
- Gone over important points. Takes questions and answered well.
- Good sense of humour.
- Good visuals, great communication, good knowledge of material. Very helpful to all students.
- Great lectures, very engaging.
- Great sense of humour. He really made the course more interesting.
- He did a great job in both clearly explaining and making materials interesting.
- He explained things very well from the bottom-up in a way that fit my thinking process.
- He is very engaging and explains very well, in particular when answering student questions.
- He made the class/course very interesting. Sitting through class is usually pretty fun.
- He makes most of the 'not-so-interesting' topics enjoyable through either humour or personal stories. He hammers topics out until the majority of the class gets it. He REALLY knows his stuff (answering off-topic questions related to C).
- He was very captivating and entertaining. [diagram of a portal companion cube]
- He's easy to understand.
- Hilarious, keeps the material interesting and explains difficult concepts with clarity and in an easily understood way.
- I like your enthusiasm and examples because it is helpful to see the working of an algorithm through colourful chalk diagrams.
- I love your use of colour and diagrams to explain routines involving pointers. It really helped me understand what was happening and gave me a strategy for dealing with such problems. I also love how you keep the class upbeat.
- Incredibly upbeat, very kind, thoroughly explained concepts. Patient.
- Keeping the class interesting.
- Keeps me interested. Present C and low-level programming concepts in a very logical order.
- Keeps the content beginner friendly (explained things I considered obvious)
- Kept my attention that strays much too easily. Also, going through complicated code in depth at a respectable speed.
- Making the course material less dry.
- Making the materials/content interesting. Explaining complicated content.
- Mostly everything
- Nice visual and oral representation of course material.
- OMG. Too much. He is awesome.
- Really cares about his teaching. Very intelligent. Very enthusiastic. Makes material fun. Very funny.
- Really engaging lectures. Good explanations and diagrams to further illustrate points.
- Really funny. Kept class interesting.
- Really good professor, interesting topics and kept student interest for duration of the course. Good use of class time, seems to enjoy teaching CS.
- Taught very well. Clarified concepts and went into detail when necessary.
- The engagement level is excellent! Never have a boring lecture, always both fun and educational at the same time.
- The overall presentation of the class and the example that were offered in class really helped to cement key concepts.
- The pointer diagrams on the board were quite helpful.
- Understanding, sympathetic, definitely one of the most caring professors. And really, I like your jokes.
- Using diagrams to show how pointers work.
- Very approachable, made the lectures enjoyable and understandable.
- Very deep explanation of complicated topics. Introducing each topic with interesting funny things (videos, games, pictures) which are also helpful.
- Very good at communicating abstract concepts.
- You are a funny guy man! It makes the course entertaining: wanted to attend lectures more as a result.
- You are very good at explaining new concepts, especially with diagrams, and I like how you go in depth and show us fun nuances.
Please make constructive comments about anything in the instructor's technique or style that could, in your opinion, be improved. |
- Can't get much better.
- Everything is good. Nothing to say.
- Everything was great.
- Extra pointer review would be nice
- For a beginner programmer, this course was aimed for someone with prior C background so we should have spent more time covering basics.
- For who ever makes slides, animated pointer diagrams would help.
- Go through important slides a little slower.
- In the latter part of the course, he started writing step-by-step examples of how code ran. I wish he did this earlier.
- It could probably be attributed to the nature of the course, but I found it somewhat annoying so much of the class is just reading off the slides.
- Make a lot more visual (i.e., blackboard) trace of code alongside actually running it.
- Maybe topics could be portrayed as exciting rather than a burden: not that everything was presented as if it were dull, but it would be sweet if each topic was presented along with reasons why it's significant. Explicitly, 'This topic is sweet because ____'. this, I think, would make each lecture even more engaging.
- More bad jokes :)
- More diagrams please. I think seeing a diagram or representation of the materials can be very helpful.
- More GoT references.
- No clear faults, good job and thanks.
- No complaints.
- None!
- Occasionally some implementation of certain concepts, namely examples, are too rushed.
- Please do more coding walk-throughs. When making clicker questions, please make them less about semantics! More diagrams (I like your coloured chalk!)
- Review previously-learned content to enforce knowledge learned previously.
- Slightly better board diagrams would be appreciated. Animations to demonstrate concepts like sorting would be appreciated.
- Some explanations could be more brief, with less repetition.
- Sometimes he goes too fast.
- Speak 'dumber'. Assume students understand less.
- The slides of powerpoint can be improved using more animation for describing pointers.
- Too much analysis of the flow of the code. When it comes to efficiency, I would have preferred a more formal and structured approach.
- Try not to go too fast in certain, tricky areas.
- Try to explain a little bit more when reach some important points in the slides.
What were the strong points of the course? |
- ADTs, mutation (finally).
- All
- Being able to submit assignments late and get 50% of the mark.
- C: lots of focus on how things work, rather than how they should be done.
- Course materials went over nearly everything.
- Covered a lot of material. Good introduction to C.
- Efficiency knowledge, pointers, memory.
- Expanded one's way of thinking about CS. Nice to learn about what goes on behind the scenes.
- Get better at understanding coding.
- Good material (relevant to career in CS). I like that there were assignments every week.
- Good past overlap took 115, 116 jump to 136 quite smooth.
- Hard/Challenging bonus questions.
- Having fun with C.
- I definitely understand C better, much better than what I gained from self-learning. Felt Racket was useless in job market BUT is a great transition to understanding C.
- Interesting content.
- Interesting.
- Introduced a new language.
- Introduced relevant 'real world' concepts. Fun and thought-provoking (so so so many thoughts provoked) assignments.
- It is just at 'right' level.
- It is very interesting and covers a good depth in the basics of the programming language used.
- It was challenging enough to keep students invested.
- Kind of hard to specify.
- Learning C and the overall coverage of material.
- Loving the fact that it had quite a bit of C. Java > C > DrRacket (Scheme).
- Online help board.
- Piazza. Large support group (IAs, ISAs, profs, etc.). Good instructors.
- Pointers, arrays, strings in C. Also ordered sets in Racket.
- Pointers.
- Prof. Tompkins attempted, and succeeded, in making the class interesting.
- Smooth transition from Racket to C. Interesting material.
- Strong clear progression into understanding of low-level programming.
- Teaching new students and algorithms in C.
- The assignments.
- The lectures were a general pleasure to attend.
- The material and the assignments.
- The material was interesting. The way C was introduced (i.e. lists first, pointers, arrays after) was sweet.
- The racket and C comparisons. It helped me understand the content better.
- The teaching way makes me feel good joining his class.
- This course builds on our knowledge from CS 135 about using memories and programming efficiently.
- To teach pointers very deeply make one understand what is going on behind the scenes (memory stuff and so on).
- Very good at teaching C. Could have gone a little more in-depth on some things.
- Very good intro to C.
- Very interesting content.
What were the weak points of the course? |
- 'Academic integrity' is a mysterious and tricky virtue, and enforcement has been spotty and unfair. The 'academic integrity' defined at the beginning of the course was changed, without warning, and students were persecuted: this is unacceptable.
- All good!
- Assignment 8
- Assignment 8 is killing us.
- Assignment questions are too short. Not explaining what is asking for.
- Assignment questions were not clear. When you provide us with function to use for example in assignment it wasn't clear how to use os-after and os-before. I didn't know that the argument can be not in the tree. Midterm was so long and not enough time to go through every question. TAs were not very helpful.
- Assignments too long. Too much emphasis on small cases in testing.
- Assignments were hard.
- Assignments were sometimes very time-consuming. Textbook was near useless.
- Cannot say any come to my mind, it was generally a well-built course all-around (content, organization, co-ordination, etc.)
- Course material was challenging to grasp, but not the course's fault. Probably the students.
- Efficiency and total orders.
- Efficiency requirements were fairly heavy, without much emphasis on how to make efficient code. Marmoset doesn't work: Bugs all the time.
- Exams are too hard.
- It goes too shallow about characteristics of C language.
- Lexicographical order assignment.
- marmoset
- Marmoset, piazza, random notices of cheating discourage group participation.
- marmoset.
- Marmoset.
- Massive courseload. Went by a bit too quickly: I had a lot of trouble keeping up.
- None
- Not always practical. Some assignments were too complicated for the amount of knowledge taken away from it.
- Not going in-depth on more advanced topics like self-balancing BSTs. Also, design recipe.
- Pointers. I personally could have used more time spent on them and linked lists.
- Practice material. Need more practice material aside form just assignments. Need more practice/model midterms, find papers like other courses.
- Showing inefficient methods before efficient ones.
- Some assignment questions were vague.
- Some assignment questions were very difficult.
- Some of the assignments were not so relevant to the course.
- Some random concepts like total-order was unnecessary.
- Some segments were extremely dry and a certain assignment was far too difficult. Marmoset feedback on release tests could be much better.
- Some things could've been less rushed through.
- Sometimes both in the course notes and assignments, explanations can be ambiguous and unclear.
- Still sticks to Racket. I think python should be taught instead of Racket.
- Teaching proper practices in one language, then transferring those techniques to another language, where they don't work so well (like teaching Racket paradigms then trying to replicate in C the same ideas, where there exist better practices for the same idea in C).
- The assignments are sometimes not assessing what it should assess.
- The course proceed too fast. Hard to keep track with.
- The powerpoint notes could have included more diagrams, especially regarding pointers. It was lacking in the visual aspect which a power point should provide to the students.
- The total order assignment. Marmoset having errors every other submission.
- Too hard, the tests for the assignments were too hard to pass. It would be really helpful if you could give us written assignments that could help us improve the theory part. And questions similar to the exams.
- Too much content on pointers, and went really fast.
- Too much emphasis on assignments. Should not be required to pass all of them.
- Too much material covered, material covered at too fast a pace. Marmoset/markus. Ridiculously long and difficult assignments. Course management / layout seems to be in flux.
- Too much work during assignments.
- total order seemed out of place.
- Very vague assignment questions.
- Workload.
- Would have preferred more C, less Racket.
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. |
- Atmosphere was VERY positive, felt relaxed in this class despite having material tougher than any other course I have. Jokes were taken lightly & helped understand concepts.
- Class atmosphere was excellent, no negativity present.
- Dave does a great job keeping an amazing class atmosphere with his jobs and upbeat attitude.
- Excellent: jokes and fun all around.
- Good atmosphere.
- Good atmosphere.
- Good class atmosphere, very positive.
- Great mutual respect.
- I believe we had a very diverse group of students and the atmosphere is great.
- Instructor created a positive/bright atmosphere.
- It was positive. Questions were welcome and profs sense of humour helpful.
- It was positively affected by the instructors attitude.
- It was very positive, exciting and nerdy.
- Many students who had laptops during class proved to be a distraction.
- Neutral.
- Positive, as the class/instructor was engaging and fun.
- Positive.
- Positive.
- Positive.
- Positively as Dave always kept the class enthusiastic.
- Positively, instructor made it very relaxed/comfortable environment. All good.
- Positively.
- Positively.
- Positively.
- Some of the lecture slides could have been shorter.
- The class atmosphere was fantastic. The instructor always made sure that it maintained a lively feel.
- The class atmosphere was very good.
- The instructor was always positive and entertaining.
- The instructor was very light-hearted and everyone felt really at ease.
- Very good.
- Very positively: it was a joy to come to class.
Any other comments, e.g., class size, suitability of room, noise level, etc. |
- Class size is pretty big, but that can't be changed.
- Class size is quite large and very hot.
- Class size was good, the atmosphere was good.
- Class was generally respectful and quiet. MC 4045 is always super warm and smelly :(
- Classroom is sweet, noise level is also very appropriate.
- Climbing stairs sucks.
- Could be smaller class size, not big deal.
- Everything is perfect.
- Excellent.
- I'd like there to be more power outlets.
- In some emails, piazza posts and assignments, could have been nicer/more polite. It felt like we were slaves.
- It was great! A bit difficult to see the board sometimes.
- Keep doing what you're doing! A quote from programmers: if it ain't broke, don't fix it.
- No power in room, CS course...
- Noise level was perfect. Class was the right size.
- notbad.jpg
- One problem is the room itself: with no elevation between rows, those who are short & sitting in back CAN'T SEE !
- Some students keep laughing and they are too loud. Little bit hard to concentrate.
- Sometimes hard to see projector.
- Thanks Dave for teaching us! Your are the second best prof so far!
- The room is too hot.
- The room was really hot which made it difficult to pay attention.
- Very large class size.
The course was designed to use fixed assignments which could be handed in up to the last day of classes for partial marks. This strained the schedule and did not allow for any solutions to be posted. The assignments also used a token test system that created a lot of frustration for the students and staff.
Overall, this term was far from a disaster, but the course wasn't living up to its full potential. On a final note, this was the first semester where clickers were used in 136 (after my strong nudging).