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: 65 / 82 (79%)
Evaluate the organization and coherence of the lectures. |
Excellent | Good | Satisfactory | Unsatisfactory | Very poor | No opinion |
49 | 12 | 3 | 1 | | |
75% | 18% | 5% | 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 | 8 | 52 | 3 | | |
3% | 12% | 80% | 5% | | |
Evaluate the instructor's treatment of students' questions. |
Excellent | Good | Satisfactory | Unsatisfactory | Very poor | No opinion |
47 | 13 | 5 | | | |
72% | 20% | 8% | | | |
Evaluate the effectiveness of the instructor's visual presentation (blackboard, overheads, etc.). |
Excellent | Good | Satisfactory | Unsatisfactory | Very poor | No opinion |
52 | 11 | 2 | | | |
80% | 17% | 3% | | | |
Evaluate the effectiveness of the instructor's oral presentation. |
Excellent | Good | Satisfactory | Unsatisfactory | Very poor | No opinion |
56 | 8 | 1 | | | |
86% | 12% | 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 |
31 | 10 | 2 | 1 | | 21 |
48% | 15% | 3% | 2% | | 32% |
Did you find the course interesting? |
Very Interesting | Interesting | Not interesting | No opinion |
36 | 28 | 1 | |
55% | 43% | 2% | |
Evaluate the overall effectiveness of the instructor as a teacher. |
Excellent | Good | Satisfactory | Unsatisfactory | Very poor | No opinion |
57 | 8 | | | | |
88% | 12% | | | | |
What proportion of lectures did you attend in this course? |
90-100% | 75-90% | 50-75% | 25-50% | < 25% |
58 | 4 | 2 | | |
91% | 6% | 3% | | |
Was the assigned work (assignments, projects, etc.) helpful in learning the course content? |
Very helpful | Helpful | Not helpful | No work assigned | No opinion |
34 | 28 | 2 | | |
53% | 44% | 3% | | |
Were the printed notes (if any) helpful in learning the course content? |
Very helpful | Helpful | Not helpful | No printed course notes | No opinion |
35 | 16 | 1 | 10 | |
56% | 26% | 2% | 16% | |
Was the required textbook (if any) helpful in learning the course content? |
Very helpful | Helpful | Not helpful | No text required | No opinion |
10 | 5 | 6 | 39 | |
17% | 8% | 10% | 65% | |
Did the course introduce an appropriate amount of new material? |
Too much | Somewhat too much | Okay | Somewhat too little | Too little | No opinion |
6 | 12 | 44 | 3 | | |
9% | 18% | 68% | 5% | | |
Was the amount of assigned work required for the course appropriate? |
Too much | Somewhat too much | Okay | Somewhat too little | Too little | No opinion |
15 | 34 | 16 | | | |
23% | 52% | 25% | | | |
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 |
| 7 | 29 | 15 | 14 |
| 11% | 45% | 23% | 22% |
Evaluate the organization and coherence of the lectures. |
- [Good] The pace can be faster. Especially when Friday is the deadline and I just learnt the necessary stuff on Thursday.
Evaluate the effectiveness of the instructor's visual presentation (blackboard, overheads, etc.). |
- [Excellent] I like the way he explained things by drawing on the board. It makes things a lot easier to understand!!!! Especially for people like me, with absolutely zero computer science background. But please, next time, dun draw on the wall, the cleansers will cry.
- [Excellent] Most are just the course slides but Dave was very good at giving us visual presentations by drawing out memory blocks, etc.
- [Excellent] vandalizes the walls
Did you find the course interesting? |
- [Interesting] It is more interesting than cs135.
- [Interesting] The beginning was too slow for me, but it picked up to some nice content after the midterm.
- [Interesting] Yes, very interesting including coke zero.
- [Very Interesting] It would be more interesting if it is less intensive
Evaluate the overall effectiveness of the instructor as a teacher. |
- [Excellent] Dave loves teaching and explaining complex concepts to students.
What proportion of lectures did you attend in this course? |
- [90-100%] All lectures are attended.
Was the assigned work (assignments, projects, etc.) helpful in learning the course content? |
- [Very helpful] But too hard for students without any computer science background.
- [Very helpful] Of course they are helpful cuz they are super long and cover everything
Were the printed notes (if any) helpful in learning the course content? |
- [No printed course notes] I did not purchase the printed version, only the online course notes.
- [Not helpful] The lecture notes do not explain some of the concepts very clearly. I struggled a lot during the first half of the concepts although I am still struggling now.
Did the course introduce an appropriate amount of new material? |
- [Somewhat too much] The ADT module and memory heap were overwhelming in my op.
- [Too much] I always got confused during the lectures. Although I know Dave had been trying to slow down the pace in order for people like me to understand, sometimes I just cannot absorb too much information during one lecture. RIP, my clicker marks.
- [Too much] tooooooooo much for those who have no background in cs (like me :)))))
Was the amount of assigned work required for the course appropriate? |
- [Somewhat too much] Although the homework provided good coverage for all aspects of the course, at times the homework was more punishing then required (vague descriptions but specific testing requirements), which I felt wasn't necessary as those types of questions didn't help me learn the course material.
- [Somewhat too much] Assignment 1-2 were unusually difficult for initial assignments. They should be toned down.
- [Somewhat too much] Some assignments are of acceptable lengths, but some others are a little longer and more difficult than is appropriate. (personal opinion)
- [Too much] I kinda wanna cry this question just remind me the days where I have to stay up all night before due to finish the assignments even if I start working on them right after they are released
- [Too much] WAY TOO MUCH. I spent all my life working on it.
On average, how many hours per week did you spend on this course outside of lectures? |
- [> 15 hours] Basically everyday. I love computer science TWENTYFOURSEVEN.
- [> 15 hours] If we can drop one of our lowest assignment it would be great.
One assignment can sometimes take up to 3-4 days.....
- [> 15 hours] more than the time I get to sleep
- [3-6 hours] It may be inaccurate.
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 tried to make lectures interesting and engaging. Clearly explained all topics and went through examples
- As someone who came into the course already knowing C, I thought you did an amazing job keeping it interesting for me while still doing an effective job teaching people with 0 experience. Discussions like the ones about the imperative vs functional paradigm gave me new perspectives on things I already knew (or thought I knew), and I feel like my understanding of C and programming in general has greatly improved.
- bool isn't_dave_great(void) {
printf("drink less coke tho");
return true;
}
- clear explanation. Dave is a professor who is NOT overrated:)
- Dave did an excellent job of explaining things using examples. Most difficult concepts became very easy to understand because he would explain them in a way that was relatable. For example, when explaining what low coupling was, he brought up how if your radio stops working, your car shouldn't break down. Another thing is that he was very funny, which helped keep the class engaged in the content. When he was talking about stacks, he made a Community joke where he said if you want to take something off the stack, you "Pop pop!" it off. While not a lot of people got it, it is something that will definitely stick with me when thinking about stacks. Whenever he encouraged discussion about clicker questions with our seat neighbours (if most of the class wasn't getting it based on the results), I found that this really helped solidify my understanding of what was going on. I also liked how he showed 5 minute clips from a movie throughout the term until we finished the movie, as it made people show up on time, meaning less disruptions when class actually started. Moreover, the class recaps at the beginning are a good refresher, and I think it really helps make sure what we learnt the previous class stays in memory. Tuesdays and Thursdays are the days I looked forward to during the week because it meant that I got to go to CS136. I had a lot of really good instructors in my first term, and I didn't expect any of my second term instructors to outdo them. By the second class, Dave had blown away all of my expectations and easily became my favourite instructor. I still think back to when he was describing that in C, we "call" a function, and how he pretended to be on the phone and pass arguments to someone on the other line. All in all, Dave is an excellent instructor, and I'd take absolutely any class if I knew he'd be teaching it.
- Dave is a dedicated, enthusiastic and creative prof who gains the interest of students in many different ways. His stories and jokes (although sometimes cringy) make the class fun and make him more relatable and approachable.
- Dave is an awesome instructor he is very good at explaining difficult concepts and answering student questions. He also provided a lot of examples that were very helpful in understanding the material well.
- DAVE is excellent. He might think he == an overrated coke man but he != .
- Dave is hilarious, he makes great jokes and analogies, always engages the students and encourages great group discussion.
- Dave really worked hard to keep the class interesting. His presentation is clear and concise.
- Dave was an incredibly enthusiastic teacher who was able to articulate abstract concepts in an easy to understand manner.
- Do his best to be funny and make the class interesting. Explain things using daily examples.
- Engaging lessons, clearly enjoyed teaching his lectures
- Enthusiastic
- Everything
- Everything!
- Excellent explanation on theory.
- Explain everything clearly
- - funny (sometimes cringy, but mostly funny) jokes!!
- the diagrams (esp for linked lists) on the board were really helpful!
- exciting, enthusiastic lectures
- Give a lot examples to make concepts easy to understand
- Great analogies to real life and diagrams to help conceptualise the material.
- Great and easy to understand explanation of concepts taught in lectures. 5 minute movie clips before class really helped me to get to class on time!
- He always kept me interested in the course.
- He explained complex concepts very clearly
- His lecture is very engaging because he explains difficult concepts in an easy way.
- Illustrating the concepts with interesting but accurate examples
- Instructor laid out several examples which clearly demonstrate how to implement or do certain tasks. The instructor is audible and can be heard, even from the back.
- Interesting and fun lectures (sorry I'm just tired so I tend to sleep in class)
- Interesting Jokes
- Keep up the great jokes and stories
- Kept the course content, which was dry at times, interesting
- Nice explanation Dave!
- Presented key programming practices and methods in a way that is fun, interesting and intriguing.
- Prof.Tompkins made the class very engaging, at the very least. Most information felt as if it were catered in just the right way - according to each one of our levels of understanding!
- Professor taught well and tried to explain relating to real world examples which was cool
- Professor was very engaging, and good at getting the entire class involved with the lecture.
- Really good at simplifying complex topics into simple real world examples.
- The anologies (such as finding previousOf nemo) make the things more memorable
- The course material was presented in an interesting way for those of us that are familiar with these concepts. Dave's analogies really helped to solidify understanding of key concepts ("you want Mario trees, not Luigi trees"). I found it extremely helpful when Dave went through examples (such as implementing a binary search tree) and pointed out specific areas where students tend to make mistakes. That definitely helped me to avoid some of those errors in my own code.
- The instructor did an excellent job of making lectures engaging and entertaining, making it much easier to learn.
- The instructor is very good at public speaking during lectures.
- The instructor was very good at explaining, Dave was patient and tries to make sure everyone understands the material thoroughly.
- - used great diagrams when teaching lists and dynamic arrays
- Very clear and interesting. Very helpful. Made me love Coke Zero
- You've given many interesting real life example to visualize the course content, which makes the material easier to understand. Also, you have explained everything in details.
Please make constructive comments about anything in the instructor's technique or style that could, in your opinion, be improved. |
- At times, I feel that more effort could be made to ensure that the back of the class was as engaged as the front.
- Could be more open about administrative questions such as isa availability, etc.
- Dave!=Overrated
- dont draw on the wall, more work for the janitors, just use the blackboard
- - drink a bit less coke zero? I'm kind of concerned
- During the lessons on efficiency, I really liked working through the problems with my classmates and trying to come up with efficient implementations. I know there is not a whole lot of time for these in-class discussions, but I do think they really have their value. It
- Give a little bit more time on clicker questions.
- He could use less yellow and green in his drawings on the slides since they don't show up well. Sometimes we fall a bit behind, but I think that it's in the interest of making sure everyone gets the concepts.
- I don't like Moana. I wanna watch kungfu panda like the other section did.
- If there was any way to save the diagrams drawn in class, that would be very helpful.
- It may be worthwhile to explain in the first few lectures, how to solve problems iteratively (if there's a general method) like how CS135 described how to solve problems recursively: base cases, general cases, etc
- It would be better if Prof can tell us less joke and leave more time for Course Note num.11-12, although jokes are good.
- Keep being awesome Dave!! Best wishes for your new baby
- Make more complex examples or try and increase the pace.
- N/A
- None
- Nope, loved to see 'be you' take stage every Tuesday and Thursday.
- Not much.
- nothing
- Please do not draw on the wall.
Cleansers will cry.
- So good!
- Sometimes explanation goes too fast. Sometimes fancy daily examples are Not so good as just plain explanation.
- Sometimes he over-explained some easy concepts and didn't explain some harder concepts enough
- Sometimes the instructor spends a little too much time on simple materials that he did not have enough time to thoroughly explain the complex materials. (not very often though)
- Sometimes there were too many stories...But overall you are an excellent prof!!
- Sometimes you go a little too slow on stuff that doesn't need too much time to understand but a little too fast on stuff that's difficult.
- stop skipping over the advanced slides D:
- There was a lot of definitions and new concepts that were taught in class without any examples, and I struggled to grasp the concepts in lectures fully as a result. If it is at all possible, more inclusion of examples would be greatly beneficial.
- Very minor point, but there were some lectures where I felt we spent too time reviewing the stuff from the last lecture.
What were the strong points of the course? |
- A lot of interesting material introduced
- A lot of useful stuff was taught.
- Assignments helped to understand material.
- C language
- CS136 provides a fundamental introduction to CS. It teaches students how to solve a problem instead of just coding.
- Dave
- Fun content, and assignments.
- Getting to know the applications and differences between the imperative and functional programming paradigms. It was very interesting to see the benefits, constraints, and drawbacks of each type.
- Gives an in-depth insight into C and how the program works, rather than basic stuff on CodeAcademy.
- Going to classes was effective
- Good course material
Interesting
Learned a lot
- I liked the movie segments before classes
- I really enjoyed the theoretical discussions on programming paradigms and all the comparisons of Racket and C.
- Impressive.
- Interesting
- interesting courses
- Introduced a lot of new material and gave large projects to apply this material
- Introduction of abstract data types and algorithms for later use in the students' careers without going in too much depth.
- It allowed students to develop a good understanding of modular programming, the advantages of modularization, and writing programs for a client. I can definitely see myself immediately applying these concepts during my co-op work terms.
- It discussed what's actually going on in C and developed our logical thinking skill.
- Iteration
- Laid down a strong foundation for CS, from a perspective I would not have been able to see on my own
- - learned a lot of C + memory and data structure concepts
- Learned a more useful language to apply to the workplace
- makes me rethink if I actually want to take more cs courses
- Presented a variety of computer science theory. Although it was basic, the exposure was interesting and useful: ADTs, modularization, doubling strategy, Big-O (noob edition), trees
- Teaches a lot of important CS concepts
- The assignments seemed pretty application oriented (esp. the games!!) so it was more motivating to work towards them.
- The course provided a very effective approach to learning about imperative programming. The focus on memory, iteration and efficiency allow the course to teach more than just an understanding of how to write "good" code, but how to design practical and effective code with a deep knowledge of how every component works.
- The course was very well structured from simple to difficult and the content arrangements are reasonable.
- The module notes were really well made.
- With C being fairly low level, it gave us an understanding about a lot of things that go on behind the scenes in other languages.
- You get to see each type of bug at least thousand times.
What were the weak points of the course? |
- ABSOLUTELY NOTHING.
I LOVE CS TWENTYFOURSEVEN.
- Almost every assignment was way too long or not enough hints were given to complete it
- Although there wasn't an overwhelming amount of content to learn in the course, there were very few examples or practice problems to use to really understand the content before the assignments. The assignments became almost the sole resource for practicing realistic and challenging problems.
- Assignment questions are sometimes too time consuming in comparison to other courses.
- Assignments and what we learned in class don't always work out the way like CS135. I always had to google how to do things because not enough information was given in class (gold questions too). Also I hated the way deadlines were was scheduled, I never get the weekend to work on cs because I like learning everything I need in class first then attempting the assignments.
- Assignments destroyed me every week literally the least favourite part of my week and I hate rainbows and malloc and Sudoku now
- Assignments often had questions which were unclear and convoluted. Often times, half the struggle was figuring out exactly what the question was asking me to do.
- - assignments take WAY TOO LONG
- Course notes/assignments were sometimes disorganized
- Difficulty gap between the assignments and course notes is somewhat too high for me.
- Explanations were sometimes aimed a little too low.
- great course. not only does this course teach me cs related stuff, it also shapes me as a person... learned how to stay calm and not to smash my computer when i see the same error code while (1) {printf("again and again");}
- It can get confusing very fast. A lot of material presented.
- jump too fast, the material in first half term is easy so I think we should not spend too much time on them, we should focus on the last part like dynamic memory etc.
- Not enough assignment work or practice problems. Also some assignments weren't explained clearly enough to understand what was expected, could use more examples.
- nothing
- null
- Once we hit heap and dynamic memory everything went downhill
- Really hard to debug.
- Seashell could be a bit buggy.
- Seashell was minutely buggy but issokie, worked well most of the time, and is a really nice tool for us.
- shouldnt have made the no talking zone just because of the reddit post
- Some assignment questions were considerably tricky and long and required a lot of time to debug and test. In addition, there were a lack of examples and live coding in lectures, particularly with efficiency, that I had found very useful in CS 135. But more importantly, the midterm... need I say more?
- The assignments are a little bit irrelative to the course material and the contexts of assignments are not clear. Besides, the tests of marmoset is a little bit unfair, since a small problem of one function will totally affect other functions while the functions are totally right.
- The assignments. Assignment 9 in particular was disgusting. I stayed up all night attempting to finish it, and failed all my tests due to one print function despite my implementations of the data structures being correct.
- The course work was sometimes too difficult and neither the lecture notes nor the tutorials were sufficient enough to prepare us for it.
- The lectures where we just went through lots of examples of code (e.g. all the linked list functions) were pretty tedious, though I don't know how that could be fixed.
- The marks and results for the assignments come out late. The solutions are posted so late that it is difficult to improve my weakness for the next assignment.
- the pace was inconsistent, the last modules were too fast compare to the previous one yet they are more difficult and require more time to talk about
- The students level in CS range from minimal to advanced proficiency. It seems challenging to accommodate everyone in the class. Also, students seem to dislike C as some think that it is not useful for a job.
- There was too much of a focus on the philosophy behind functional and modularization. Also, the way the course is structured, the first month felt very slow. This was also reflected in the difficulty of the assignments. In the last month, March, the assignments got significantly more difficult. I would have liked the course to be a bit more balanced.
- Toooooo much homework.
- Tutorials did not seem entirely relevant. Too much review of previous concepts and not enough time spent on doing practice problems.
- Wish there were simple practice problems to complete before the assignments.
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. |
- Always a positive class environment
- Appreicated attempts to be gender and sexuality inclusive.
- Class atmostphere was no effected by the attitudes of instructors or students
- Classroom atmosphere was good overall
- Dave is really a great prof in terms of caring for students. He was really brave to share his story of mental health with us. I believe it made a great impact on a lot of my classmates.
- Everything was good in class
- fine
- I believe that the atmosphere was affected positively by setting up a "no socializing zone" at the side of the class for students uncomfortable with collaborating with others.
- I do not feel that there was any particular affect. Everyone was respectful to each other in class and all students were treated fairly and equally.
- N/A
- N/A
- Nah, it was a pretty interesting section, a nice one.
- No
- No
- No.
- None of that matters in this course
- Nope
- Nope,
- Only positive vibes in this class.
- Positive. Dave was very considerate of everyone
- positively
- Positively!
- Positively, having cs136 class was my happiest time during a day.
- Positively. Dave is interesting and respects everyone's any question.
- Positively. Dave loves everyone and everyone loves Dave.
- The atmosphere is too depressed.
- The instructor always tries to lighten the mood fo the lecture by showing us movies before class and telling us stories that are humorous. The atmosphere is very positive.
Any other comments, e.g., class size, suitability of room, noise level, etc. |
- Class size was good, no students talking really.
- fine
- Good room environment.
- I felt that the size of the room was too small, as it was always completely full. In my opinion, being in such a crammed space can inhibit a student's ability to pay attention in class, and therefor that student's ability to learn.
- I would've prefered a classroom with theatre-style seating since people's heads got in the way of the screen sometimes.
- Just, THANK YOU SO MUCH DAVE!
- Maybe a slightly bigger room would be suitable for the number of students that were in the class
- MC2034 again it's always cramped
- N/A
- N/A
- No comments
- None
- None
- None
- Nothing
- null
- Perhaps something could be done to address the different level of students in the class.
Also, perhaps CS136 could add a small lab component. For example, there will be a one question assignment due every Monday. The question won't be worth a lot of marks but it encourages students to stay on top of the material and prepare for the upcoming lecture and homework.
In addition, I personally did not think the tutorial is that useful. In class, when I ask the prof a question, I can be sure that he will give me a 100% correct and concise solution. However, in the tutorial, the TAs are not as good at explaining concepts and answering questions. Perhaps, in the future, the tutorial format could be change (Maybe to a lab?)
- Room was kind of small
- Smaller class is better.
- The CS profs should run a D&D campaign (or Pathfinder)