Course Description:
CS 135: Designing Functional Programs
An introduction to the fundamentals of computer science through the application of elementary programming patterns in the functional style of programming. Syntax and semantics of a functional programming language. Tracing via substitution. Design, testing, and documentation. Linear and nonlinear data structures. Recursive data definitions. Abstraction and encapsulation. Generative and structural recursion. Historical context.
Dave's Comments:
Teaching Evaluations:
Number of Respondents: 66 / 80 (82%)
Evaluate the organization and coherence of the lectures. |
Excellent | Good | Satisfactory | Unsatisfactory | Very poor | No opinion |
57 | 9 | | | | |
86% | 14% | | | | |
At what level were the instructor's explanations aimed? |
Too high | Somewhat too high | Just right | Somewhat too low | Too low | No opinion |
1 | 7 | 57 | 1 | | |
2% | 11% | 86% | 2% | | |
Evaluate the instructor's treatment of students' questions. |
Excellent | Good | Satisfactory | Unsatisfactory | Very poor | No opinion |
48 | 13 | 5 | | | |
73% | 20% | 8% | | | |
Evaluate the effectiveness of the instructor's visual presentation (blackboard, overheads, etc.). |
Excellent | Good | Satisfactory | Unsatisfactory | Very poor | No opinion |
50 | 12 | 4 | | | |
76% | 18% | 6% | | | |
Evaluate the effectiveness of the instructor's oral presentation. |
Excellent | Good | Satisfactory | Unsatisfactory | Very poor | No opinion |
62 | 2 | 2 | | | |
94% | 3% | 3% | | | |
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 |
19 | 5 | 7 | 1 | | 34 |
29% | 8% | 11% | 2% | | 52% |
Did you find the course interesting? |
Very Interesting | Interesting | Not interesting | No opinion |
35 | 26 | 3 | 2 |
53% | 39% | 5% | 3% |
Evaluate the overall effectiveness of the instructor as a teacher. |
Excellent | Good | Satisfactory | Unsatisfactory | Very poor | No opinion |
63 | 2 | 1 | | | |
95% | 3% | 2% | | | |
What proportion of lectures did you attend in this course? |
90-100% | 75-90% | 50-75% | 25-50% | < 25% |
59 | 4 | 3 | | |
89% | 6% | 5% | | |
Was the assigned work (assignments, projects, etc.) helpful in learning the course content? |
Very helpful | Helpful | Not helpful | No work assigned | No opinion |
41 | 21 | 2 | 1 | 1 |
62% | 32% | 3% | 2% | 2% |
Were the printed notes (if any) helpful in learning the course content? |
Very helpful | Helpful | Not helpful | No printed course notes | No opinion |
20 | 22 | 2 | 14 | 8 |
30% | 33% | 3% | 21% | 12% |
Was the required textbook (if any) helpful in learning the course content? |
Very helpful | Helpful | Not helpful | No text required | No opinion |
6 | 13 | 12 | 21 | 14 |
9% | 20% | 18% | 32% | 21% |
Did the course introduce an appropriate amount of new material? |
Too much | Somewhat too much | Okay | Somewhat too little | Too little | No opinion |
5 | 16 | 42 | 1 | 1 | 1 |
8% | 24% | 64% | 2% | 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 |
10 | 36 | 19 | 1 | | |
15% | 55% | 29% | 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 |
| 11 | 25 | 17 | 13 |
| 17% | 38% | 26% | 20% |
Evaluate the organization and coherence of the lectures. |
- [Excellent] Connections between topics are very obvious, which makes the course proceed smoothly.
- [Good] Some of the tougher concepts in the course still seemed extremely unclear
At what level were the instructor's explanations aimed? |
- [Just right] Based on prior experience they were trivial to understand. For first time programmers it would be just right though.
- [Just right] On the more difficult topics (late in the term), it was just a tad quick.
- [Just right] The instructor is very familiar with the ability of students, and often gives out reminders prior to explaining difficult materials.
- [Somewhat too low] Personally found the explanations to be too easy. But they seem like they would make sense for people with no data structure experience
Evaluate the instructor's treatment of students' questions. |
- [Excellent] Answered the questions very well and showed them through Racket.
- [Excellent] Answers students questions coherently, often with (useful) examples.
- [Excellent] Keep students interested in lectures.
- [Excellent] Never made anyone feel dumb asking questions
- [Good] I felt sometimes questions were mocked
Evaluate the effectiveness of the instructor's visual presentation (blackboard, overheads, etc.). |
- [Excellent] I really enjoy the explanations through DrRacket!
- [Excellent] Lots of live examples of code in class, which was great!
- [Excellent] Love the size of the slides, and how he draws on them.
- [Excellent] Perfect use of highlighting, under-lines, etc., also the red pointer. It really helps!
- [Excellent] The colourings and highlighting of code made the purposes very clear.
- [Excellent] very effectively drew examples and explainations on the powerpoint
- [Good] The presentations were sometimes a bit hard to understand when you would review at home because they wouldn't make sense.
- [Good] This course consists of slides and blackboards. To save time, the instructor should prepare more visual representation of data structures (such as more than one graphs as examples to differentiate directed and undirected graphs), either on blackboard or course slides.
Evaluate the effectiveness of the instructor's oral presentation. |
- [Excellent] I thought your style was great. Your voice is great. Everything is awesome.
- [Excellent] Super interesting person and was always able to hold my attention
- [Excellent] The high voice and low voice acting for the list and single element functions was really great
- [Excellent] The instructor is successful in stimulating students' interests and managing less-able students.
- [Good] Again sarcastic/mocking weaker students at times
Was the instructor available for help outside of class? |
- [I did not seek help] I am sure you were available many days and hours. I just didn't have questions.
Did you find the course interesting? |
- [Interesting] It was interesting, but pretty challenging.
- [Very Interesting] * it is good to know the theory behind why things work
- [Very Interesting] An exceptionally good introduction to Racket and functional programming language which proves to be a challenge for every student. The materials flow smoothly and give students a glance into university computer science. Enhancements closely connected with MATH 135 are really worth mentioning in lectures, even for a few words only.
- [Very Interesting] Partly content but a largely your humour.
- [Very Interesting] Please continue with the pop culture references
Evaluate the overall effectiveness of the instructor as a teacher. |
- [Excellent] Always kept things interesting. Cool style. The Lego movie was cool. I liked the casual talks.
- [Excellent] Best instructor for the course without a doubt, unique style of teaching and positive attitude 100% of the time. Amazing experience to have as him as an instructor in first year of university.
- [Excellent] Dave you are the best instructor for incoming CS students. You teach with so much enthusiasm and you're hilarious. I'm hoping to get into your section for CS 136.
What proportion of lectures did you attend in this course? |
- [90-100%] attended every lecture
- [90-100%] I always go to Dave's lectures:
- [90-100%] Never missed a lecture because I was afraid of falling behind.
- [90-100%] The instructor does a good job in capturing students' attention. The difficulty of the course is also an incentive for students to attend lectures
Was the assigned work (assignments, projects, etc.) helpful in learning the course content? |
- [Helpful] Helpful but sometimes questions were way too hard.
- [Helpful] It was rather helpful in burning my brain cells and decreasing my sleep time.
- [Helpful] Very difficult at times. Not all the questions helped me prepare for the midterms. But overall, the challenging problems really helped exercise my problem solving skills.
- [Very helpful] Assignment help reinforce the materials in students. It is a good idea to design comprehensive assignments which cover every week's lectures. One thing that is essential is to ensure that the instructions do not contain major ambiguity. (For instance, the 'Reply' to emails is very unclear, and the prompt given is misleading. A difference should be given to reply in the structure and reply of 'any depths' required in problems.)
- [Very helpful] Assignments were most of the learning.
Were the printed notes (if any) helpful in learning the course content? |
- [Helpful] Missed some things such as how to actually use abstract list functions.
- [No printed course notes] Listening was better than taking notes.
Was the required textbook (if any) helpful in learning the course content? |
- [Helpful] Provides extra examples, but inconsistency can be really frustrating. The course instructors should figure out a way to point out the discrepancy between course slides and textbooks (such as handing out a memo which lists all of the differences before exams, or maintaining a website page as an explanation.)
- [No opinion] Rarely looked at textbooks
- [No text required] Not required but HTDP was an okay supplement. I prefer the slides (a lot) more though.
Did the course introduce an appropriate amount of new material? |
- [Okay] I have learned some CS in high school (Gr10 to 12) so I knew a lot of the concepts presented in the term. I can definitely understand if a student new to CS was overwhelmed.
- [Okay] I suppose to be a bit much at first, but it turns out that most of the students can adapt to the pace of the course.
- [Somewhat too much] It was really fast paced and many things were confusing.
- [Too much] For someone who is new to programming, yes.
Was the amount of assigned work required for the course appropriate? |
- [Okay] Assignment 7 and 9 were very difficult and took a lot of time.
- [Somewhat too little] Consider adding challenging optional questions that are meant to allow for collaboration between students
- [Somewhat too much] Assignment 9 was pretty rough.
- [Somewhat too much] Heavy workload for a first-year student. Students learn less through long and clumsy assignments, only to keep modifying and guessing the code and eventually the code becomes meaningless and not understandable. I know it's hard to keep the assignments short, and what I can think of to do are two ways: (1) keep separate parts relevant (but may not be dependent), like in Assignment 9, so the flow seems very logical for students. (2) improve clarity in instructions so that students spend less time understanding the questions. (3) remove redundant parts of questions.
- [Somewhat too much] I feel the assignments sometimes just edged on being a bit too long.
- [Somewhat too much] The prof said that the assignments should take about 8 hours but some took more than 15 hours. They should re-evaluate some assignments and tone down the time needed to finish.
- [Somewhat too much] Why were assignments so hard and long? Why was there an assignment due the night after our first midterm?
On average, how many hours per week did you spend on this course outside of lectures? |
- [7-10 hours] Even as double degree, it was a nice amount.
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. |
- A miraculous teacher with the ability and desire to teach. Showing the class his passion for computer science is very influential to students, and acts as a push to first-year CS students. Very approachable and friendly with his students and try to encourage interaction within class.
- Always super enthusiastic, clear and provides great examples and stories of how the code would apply to real life--you make CS seem like its lot of fun!
- Dave does a great job of explaining concepts and makes the lectures as engaging as possible. He is also really funny.
- Dave does a great job of making course content interesting. He also makes lectures enjoyable to attend through jokes and his 5-minute movie clips in the beginning of class.
- Dave is a great teacher. He explains the concepts very clearly. He answers all the questions asked by the students in the class. He is absolutely hilarious --> Helps in keeping the students attentive in a 90 minute class.
- Dave is the funniest teacher in CS135!!
Also very helpful and friendly
- Dave Tompkins made every lecture entertaining and educational. His passion for Dr. Racket motivated me.
- Everything
- Everything. Having Dave Tompkins as a teacher was a blast. He consistently kept the course interesting, even when he said it would be dry. I hope to have him again next term/year, but apparently those classes fill up faster than a mall on black friday.
- Everything... the course can be pretty dry at times but Dave never failed to entertain the class and keep them engaged.
- * Examples were very good at adding to an understanding of the concepts
* playing clips of a movie beforehand motivated students to arrive on time
- Explained concepts well until the last 1/4 of the modules
- Explaining how trickier concepts would work using examples, such as the clone idea for recursion and the big voice/small voice for mutual recursion.
- Good examples
- good oral speech!
- Great enthusiasm in every lecture and made class really fun for students!
- Great lectures, I could absorb the course material easily.
- Great presentation skills, made 135 memorable.
Selected the same prof for 136 for this purpose
- great prof, taught everything and was really fun to listen to
- hands down the best instructor i had all term.
- Has a way of keeping everyone concentrated and has fun with the course
- He has been an excellent instructor overall.
- He is funny and explained new material well.
- He made the class very interesting and fun to attend. The Lego movie was awesome! (even though I missed half of it due to having a class on the other side of campus right before)
- he plays the logo movie
- He taught the class in a very creative manner, was clear and well organized with each lecture.
- His ability to always keep the class engaged and laughing, but also his explanations of difficult concepts made the class a joy to be a part of.
- I enjoyed attending class each week and I like that fact that you tried your best to make the lectures interesting/entertaining when the material was a bit bland at times.
- I enjoyed the movie :D
- I like how Professor Tompkins adds flavour to his lectures with several stories and analogies and quirky pop references and jokes. He is always lively in all his lectures so he is never droning on. He engages the class at most times. I, for one, loved the use of his high voice and low voice while explaining mutual recursion, and I like how he explains concepts in a simple manner that is easier for everyone to visualise and comprehend.
- implementation of [inappropriate comment] into loops.
- Is able to introduce new concepts in an engaging manner that connects to other previous topics.
- Kept the classes interesting.
- Lectures were always interesting and inspiring
- Literally everything! The funny, casual comments were great.
- Made the class funny and exciting.
- Made the class interesting
- Made the lecture fun with constant pop culture references which I think that this allowed him to stand out from the other professors
- Make the material very interesting
- Making the course feel extremely interesting.
- Oral presentation, keeping the class interested.
- Put on movie before the lecture. Explained things very thoroughly. He didn't just read off the slides.
- Real life application of concepts. Ie: evolution trees
- The course was really interesting and Dave did a great job explaining things and keeping the class's attention.
- The energy is great and makes me focus in class
- Useful examples
- Very engaging, I now love and respect Racket thanks to Dave
- Was funny
- Your lectures are very interesting, and the examples give are very memorable.
Please make constructive comments about anything in the instructor's technique or style that could, in your opinion, be improved. |
- Dave is at the peak of his game. There is nothing he can improve on because he is perfect.
- Dave is perfect.
- He could do a couple of harder examples and go through them in the class to make it convenient to do the assignments.
- He was great.
- I don't know how, but keep me awake please.
- I know you didn't write Assignment 9, but I feel like we would have been more prepared and less overwhelmed if we had gone through some examples of nested foldrs in class.
- I think Dave Tompkins is the best prof there is in CS 135, and cannot think of anything I would like to see different from him.
- I'd like more
- If possible, do a bit more harder examples in class so we're more ready to tackle assignment problems ourselves.
- Keep up the work :)
- Little fast when go through slides
- Maybe you can post some examples you wrote in class.
- More class participation
More jokes
Show us interesting things that can be done in racket
Needs less lightsabres, more racquets
- More funny jokes and comments because they are so good. They keep things interesting and help me stay focused during the lecture. But I understand that you are a prof and not a comedian. However you'd be a good comedian but I'm not saying you're not a good prof. A perfect professor though, if you were wondering.
- More interactions with students other than by clickers.
- No complaints
- No Dave no life.
- None
- None
- None that i think of.
- Nothing
- Nothing can really be improved, he's great.
- Perhaps giving students a short break in the middle of the lecture would help keep students focused.
- Share your love in CS and teaching with your future classes!
- slightly on the fast side
- Some jokes could have been more accessible to all students (not personally a sci-fi fan myself).
- Some of the concepts in the harder parts of the course could be improved
- Sometimes, it would be hard to understand the slide deck at home.
- Too much [inappropriate comment].
- Was great
What were the strong points of the course? |
- all of content is pretty interesting
- As a complete beginner it's a good introductory course to CS.
- Assignments aren't too boring, they cover all the material from lectures every weak
- Assignments had some humour/interesting portions (except for assignment 9)
- Assignments were so time consuming, that you don't need a meal plan to survive in University of Waterloo.
- Assumes that students have no prior experience in computer science.
- Clear content presentation, reasonable assignments, good flow and structure.
- Covering and explaining all the advanced tree and recursion nonsense using the "two voice method"
- Dave Tompkins and Lego Movie
- Dave.
- Easy to understand and interesting.
- Good for starters
- Good introduction to a different kind of programming language and teaching basics of CS
- Good introduction to a very different programming environment and abstraction. Keep students with every level of CS knowledge interested and challenged.
- Having all slides available online
- Interesting concepts.
- Interesting, and applicable.
- It is a good course for teaching students that have little to no programming experience.
- It was taught at a level so that even people who have never programmed in their life could learn it
- It's good for explaining functional programming and programming concepts in general.
- Lectures
- N/A
- pretty cool course
some assignments were fun
cool things with recursion
- Racket. So cool.
- Really did a great job of introducing us to functional programming since no one had ever heard of racket before.
- Recursion was very fun
- The assignments really helped me understand the material and the movie was good.
- The bonus [inappropriate comment] assignment.
- The course introduces students to Functional Programming, which is something that the vast majority of students would have never come across before. The in-depth focus on recursion and emphasis on strengthening the basics is a very strong aspect of this course.
- The instructor!!!
- The presentation of content.
- The real life applications of concepts was inspiring.
- This course is very well organized. Every teacher taught the same things, and the exams/assignments were fair for anyone in any class. There were also lots of good resources to help you if you were having trouble, something a lot of other courses lack.
- Very engaging and easy to follow.
- Very interesting to learn programming in a new language.
- - Very interesting
- Clear knowledge points
- Very useful, the world load was manageable, and the class didn't move overly fast
What were the weak points of the course? |
- Amount of assignments too high.
- Assignments (especially near the end) were extremely long/difficult and became something to dread during the week rather than look forward to learning from. This made me lose interest in the course material.
- Assignments are a big long.
- Assignments required way too much time. Need more examples of mutual recursion.
- Dave is flawless
- Design recipe
- Design Recipe - I understand the need for it however I believe it was a bit too structured in how it was required to be done. Haven taken cs courses in high-school with different 'design recipe'/templates on how things should be done I lost some marks on the first few assignments for things that seem kind of pointless. (mainly naming convention)
- Design recipes are a pain to write, I also believe they are not very useful when writing code.
- Doing functional abstraction in such a short timeline.
- dr racket
some assignments were wayyyyy too hard (matrix)
- got .rkt on midterms
- Huge focus on recursion over "for loops"? There probably are great reasons but none I know of. Not enough stepper questions for practice but it was a huge chunk on midterms.
- Huge gap in difficulty between in-class examples and assignment questions.
- I didn't like the design recipes or templates because I was able to do all questions without the use of them.
- I wish there were more office hours
- It would be really difficult for less-able students to keep up with lectures or catch up while advancing into hard contents in such a fast pace.
- Make the assignment all the same difficulty
We were stuck on beginner student for a long time, while some concepts such as trees, locals were very quick.
- My grade.
- N/A
- None. (but i'm upset that i'm not in your 136 class)
- Some assignments and that design recipe monster.
- Some assignments are way too much, design receipt, especially tests
- some assignments were a little too difficult, and midterm 2 was too long to perform well in the time given
- Some assignments were a little too hard
- Some clicker questions were unreasonable given the short length of time given to respond (although the free clicker marks balanced things out).
- Some content was rushed a bit.
- Some examples were a bit bland, some of the assignments were really hard.
- Some of the advanced concepts, such as trees and application of foldr could be explored more thoroughly.
- Sometimes there was too much expected of the students in the assignments. Also, some examples given in the lecture slides are specific to the Math faculty (in particular the example about Euclidean GCD), so that leaves students from outside the Math faculty clueless.
- The assignments and approach to the material
- The assignments were too hard.
- The assignments were too hard.
- The course has a bit of a slow uptake
- the lambda class notes did not help at all.
- The level of the assignments were no where near to what was taught to us in the class or what was in the course notes. Also, the syntax and the way (chronology) of writing a piece of code (and implementing logic in the code) is so different from most of the commercial languages that it makes it harder to switch between Dr. Racket and other mainstream languages.
- Workload is a little massive for someone with no prior CS experience. For the most part, I enjoyed the challenge but sometimes I miss having friends other than DrRacket on the weekends.
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. |
- Class atmosphere is very positive.
- Dave often made (I assume) everyone feel comfortable in class. Lots of jokes were made, and he shared a lot of relevant personal stories, allowing you to make a connection with him, which helped me pay attention more. Very good teacher.
- Everything was good :)
- Everything was great. Dave made hilarious jokes, to keep the atmosphere positive.
- I really liked the atmosphere, it was relaxing and and it was an open environment.
- I thought it was very positively affected. The "not-too-serious" style that you brought kept attitudes positive and friendly.
- N/A
- neutral
- Neutral atmosphere
- No
- No
- No
- No comment
- No effect
- No.
- No. The instructor was great.
- nope
- Not really, but sometimes in class I like to count how many guys there are between me and the next girl. My record is 20!
- Positive atmosphere always.
- Positive atmosphere.
- positively
- The [inappropriate comment] was unfair.
- The atmosphere during class is very lighthearted, lectures are very enjoyable to attend. There was no discrimination or negative attitude towards ethics, gender or any background of any student.
- The atmosphere was positive :)
- The class atmosphere was positive with dave as our instructor. He did not make any offensive remarks and acted very professional.
- The class was very inclusive and positive.
- Too many people sleeping, on Facebook, etc.
- Very very positive. Dave's attitude made the class always amazing.
- Yes, Dave is absolutely hilarious and it helped in a positive manner.
Any other comments, e.g., class size, suitability of room, noise level, etc. |
- CAN WE WATCH HOW TO TRAIN YOUR DRAGON 2 IN CS136. WHEN I FOUND OUT YOU WATCHED THE FIRST ONE LAST YEAR I ALMOST WISHED I HAD SKIPPED A GRADE SO I COULD WATCH IT. honestly if this actually happens and you hear squealing at the beginning of every CS136 class then you know that girl is the person who wrote this evaluation.
- Class size is suitable. Chargers should be available for such a programming-oriented course.
- Class size was good, though even with glasses it was a little tricky to see the screen from the very back.
- Class size was reasonable and the lecture hall fit the class quite well
- Class size was too large
- Dave was the best prof ive had so far, and my favourite teacher of all time basically. Such an interesting person!
- Everything was good
- Good size room in RCH
- [inappropriate comment].
- LOVED the "high voice" / "low voice" dramatization for mutual recursion. Must have been tiring to keep up, but nonetheless helped me to remember the concept much better. Explanations were easy to understand, for people who had a good foundation in CS and those who had never taken the subject before. Overall, Prof Tompkins was an awesome instructor! Thank you for a great term - you provided some much needed light-heartedness during some challenging times transitioning to university, being away from family and contemplating career paths. Know that you've had a great impact on your students.
- Loved the LEGO movie and the jokes.
- moar lightsaber pls
- N/A
- No
- No comments.
- No effect
- None
- None.
- Please give Tompkins a bigger room so he can teach more people!
- Smaller class
- Teach more cs136 sections in winter 2016
- The assignments load is a little bit too much. But I really think some of the assignment is unfair! (such as assignment 9!) The professor should really put more emphasis on practicing our cs skills instead of reading skills when they write the assignment!!!
- The class size should not be more then 50. Rest everything was good.
- The class size was fine, and the screen was easy to read even from the back of the room, so I never had to rush just to find a seat where I could read the screen
- The class size was large but that was understandable because many people would want to attend Dave Tompkins's lectures.
- The space for each student is tiny. I sit in one of the farthest rows and I can hear your voice very clearly, thank you. The class was pretty quiet except for laughter.
- We should have a room with outlets since most people use their laptops.