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: 59 / 70 (84%)
Evaluate the organization and coherence of the lectures. |
Excellent | Good | Satisfactory | Unsatisfactory | Very poor | No opinion |
49 | 10 | | | | |
83% | 17% | | | | |
At what level were the instructor's explanations aimed? |
Too high | Somewhat too high | Just right | Somewhat too low | Too low | No opinion |
| 4 | 54 | 1 | | |
| 7% | 92% | 2% | | |
Evaluate the instructor's treatment of students' questions. |
Excellent | Good | Satisfactory | Unsatisfactory | Very poor | No opinion |
46 | 12 | 1 | | | |
78% | 20% | 2% | | | |
Evaluate the effectiveness of the instructor's visual presentation (blackboard, overheads, etc.). |
Excellent | Good | Satisfactory | Unsatisfactory | Very poor | No opinion |
49 | 9 | 1 | | | |
83% | 15% | 2% | | | |
Evaluate the effectiveness of the instructor's oral presentation. |
Excellent | Good | Satisfactory | Unsatisfactory | Very poor | No opinion |
54 | 5 | | | | |
92% | 8% | | | | |
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 |
25 | 9 | 8 | | | 17 |
42% | 15% | 14% | | | 29% |
Did you find the course interesting? |
Very Interesting | Interesting | Not interesting | No opinion |
32 | 27 | | |
54% | 46% | | |
Evaluate the overall effectiveness of the instructor as a teacher. |
Excellent | Good | Satisfactory | Unsatisfactory | Very poor | No opinion |
58 | 1 | | | | |
98% | 2% | | | | |
What proportion of lectures did you attend in this course? |
90-100% | 75-90% | 50-75% | 25-50% | < 25% |
52 | 4 | 3 | | |
88% | 7% | 5% | | |
Was the assigned work (assignments, projects, etc.) helpful in learning the course content? |
Very helpful | Helpful | Not helpful | No work assigned | No opinion |
33 | 25 | 1 | | |
56% | 42% | 2% | | |
Were the printed notes (if any) helpful in learning the course content? |
Very helpful | Helpful | Not helpful | No printed course notes | No opinion |
15 | 25 | 2 | 14 | 2 |
26% | 43% | 3% | 24% | 3% |
Was the required textbook (if any) helpful in learning the course content? |
Very helpful | Helpful | Not helpful | No text required | No opinion |
2 | 12 | 15 | 19 | 11 |
3% | 20% | 25% | 32% | 19% |
Did the course introduce an appropriate amount of new material? |
Too much | Somewhat too much | Okay | Somewhat too little | Too little | No opinion |
3 | 15 | 38 | 2 | | |
5% | 26% | 66% | 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 |
10 | 20 | 28 | | | |
17% | 34% | 48% | | | |
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 | 10 | 26 | 15 | 7 |
2% | 17% | 44% | 25% | 12% |
Evaluate the instructor's treatment of students' questions. |
- [Excellent] Often jokes around with the students and converses during lectures :)
- [Good] Sometimes, certain students may ask unnecessary questions that derail the class. At times like this, the instructor could improve upon ending these questions sooner and getting the class back on track.
Evaluate the effectiveness of the instructor's visual presentation (blackboard, overheads, etc.). |
- [Excellent] I liked how Prof. Tompkins mainly taught interactively through Dr. Racket instead of just reading off of slides. Going through sample problems slowly together helped student learn how to discover solutions in a function paradigm. He also used his laptop well, I especially like how he doodles on his laptop screen to emphasize and illustrate certain points
- [Excellent] love those treeeeeeeeeeeeeeeeeeeeeeeeees
Evaluate the effectiveness of the instructor's oral presentation. |
- [Excellent] Very enthusiastic, interesting person.
- [Good] A little hard to catch up with, for EMLS students, but good enough most of the time
Was the instructor available for help outside of class? |
- [Always] Office hours were extremely helpful
Did you find the course interesting? |
- [Interesting] Though I have 5 years programming experience, functional programming is something else. Having no iteration or variables made seemingly simple problems very challenging and interesting.
Evaluate the overall effectiveness of the instructor as a teacher. |
- [Excellent] Tompkins for lyfe <3 I'll be no-lifing quest over the next few weeks trying to squeeze into his CS136 class.
What proportion of lectures did you attend in this course? |
- [90-100%] thanks to endless CQs
Was the assigned work (assignments, projects, etc.) helpful in learning the course content? |
- [Helpful] The assignments seemed unnecessarily difficult sometimes (the exams seemed to aim at the right level, and even though I know that the assignments are supposed to take longer to figure out, they sometimes just felt TOO strenuous)
- [Very helpful] but too much,(especially for the design recipe) , seriously
Were the printed notes (if any) helpful in learning the course content? |
- [Helpful] I didn't use the slides too often, but they are very thorough and go over the course content in depth.
- [No opinion] Did not use.
- [Very helpful] The PPT slides are A+ (unlike my grades :c)
Was the required textbook (if any) helpful in learning the course content? |
- [No opinion] Though we were often encouraged to read certain parts of the textbook, it didn't prove necessary to excel in the course.
- [Not helpful] Textbook was useless.
Did the course introduce an appropriate amount of new material? |
- [Okay] I was expecting first year CS would be all review for someone who's programmed before. We ended up going over a lot of stuff I already knew, but functional twists kept things interesting.
- [Somewhat too much] Very fast-paced, so it was difficult to absorb the new material while trying to fully understand the previous material
Was the amount of assigned work required for the course appropriate? |
- [Too much] Approximately double the work of Math 135 and Math 137.
- [Too much] Design recipe was a little excessive.
On average, how many hours per week did you spend on this course outside of lectures? |
- [> 15 hours] >30 hours lol
- [3-6 hours] it really depends on how many hours I spent on assignments
- [7-10 hours] Some assignments required a lot more time than others. This is not just the case that assignments are increasing in difficulty.
- [7-10 hours] Was seldom able to finish assignments.
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. |
- 10/10 great instruction and kept class engage; his lectures helped fill us with determination
- Although the examples are provided in the slides, I like how Dave still opens up a tab in racket and writes the code/examples out with us so that we can understand at a better pace- instead of throwing the example at us and leaving us to understand it all at once.
- Clearly explained the topics in the course. Easy to understand
- Coding in the class, which makes more clear for us to understand the step.
- Dave explained everything clearly, interestingly and completely
- Dave is always enthusiastic, make me have passion on this course.
- Dave is excellent! I hope I can stick with him for my CS 135.
- Dave is extremely engaging in lectures and does a great job of making somewhat boring topics interesting.
- Dave is incredibly funny and engaging while remaining respectful and competent, and I respect him hugely for that. You can tell he really cares about his students and the material. CS135 was the course I was most dreading this semester but it quickly ended up becoming my favourite, in large part due to the amazing instructor. In high school (and even in some courses now) I tended to go over the material on my own at home instead of bothering to follow the lessons, but Dave's lectures are actually helpful and engaging. His sense of humour is very positive and sincere, the kind that makes you smile without making anyone feel bad.
- Dave is the beeeeeeeeeeest!
- Dave kept all lectures very interesting and provided many of his own examples supplementary to course slides
- Dave made the class really enjoyable and fun to go to. Dave was always available to answer any questions and was extremely helpful.
- Dave truly understood us students in the class. He would realize when we were "zoning" out while he was lecturing us. Instead of forcing the information on us, he would slightly diverge from the topic and gain our attention through light-hearted jokes or pop-culture references. Once he had regained our attention he would continue lecturing us on the material at hand. I feel that this is one of the strong points of his teaching style as forcing the information on students that have "zoned" out would only make them "zone" out further.
- Dave was awesome.
- Dave's a really fun presenter and he works hard to keep the class engaged.
- Everything was great. Dave is interesting and he can engage students listen in class and follow the lecture moving on.
- EVERYTHING! Dave is an amazing lecturer, and person overall. Even though I haven't really talked to him outside class, I can tell that he's a wonderful person just by the way that he interacts with the class. As well, I love all the funny references he makes during class.
ALSO, he taught with a lightsaber once. And he did this high voice/low voice thingy... I loved it. Dave 4 prez
- Everything's been great
- Everything. Amazing prof who loves his job, and it really shows.
- explain crucial examples functions clearly
- good
- Good at teaching.
- Great character, loved his style of teaching. His examples and rough work was very helpful. He was also very passionate about showing us cool stuff which I appreciate. He does a good job at teaching new and experienced coders without confusing too many people.
- Great energy, lectures were very enjoyable.
Analogies used when explaining difficult concepts were really good.
- He has made the classes very interesting and attractive, and was able to explain the new knowledge in a way that was easy for students to understand.
- He makes the class interesting so that everyone will pay attention. Would love to have him as my prof again in the next term.
- He was great at keeping the class engaged. Examples were very effective at demonstrating certain concepts too.
- He's a funny guy.
- He's funny and interactive with the class, loved the lightsaber that he brought into class one lecture.
- His is the most hilarious professor I have and never fails to keep the class on their feet for long enough to understand lectures. Lectures are very much worth attending.
- His methods of explaining new concepts was very good, and he was always very interactive with the students keeping lectures interesting
- Kept all students engaged through great lectures.
- Kept the class entertaining, but at the same time explained everything clearly
- Lectures are funny. Typing out examples are helpful.
- Lectures so good that it made [name removed] actually show up to class (that's pretty hard to do)
- Love the movies played 5 min before class starts, it helped me wake up. The lectures are very easy to understand and the use of "Racket Hat" makes the class hilarious
- Made the lectures interesting and gave great explanations. Would do a lot of live examples making it really easy to follow what he was doing instead of just looking at slides.
- movie before class
- One of the best profs! Makes lectures interesting and fun, I actually enjoy coming to class. Goes over the material at a good pace and answers any questions students have. Loved watching the lion king and the comparison between recursion and drug use. Some of the course material was dry but Dave tried his best to keep everyone awake.
- Professor Tompkins is an outstanding professor. He teaches CS brilliantly both in depth and in humor. There isn't enough good things to say about him, just that he is the best professor/teacher I've ever had to date.
- Really engages the class. Treats it like a performance, yet teaches everything that needs to be taught, leaving us both entertained and informed.
- Really excellent visual presentation. Easy to understand.
- The fact that Dave taught this course made me want to come to every lecture. He did not only make the lectures fun but he introduced new concepts to students like myself very well.
- Tompkins did amazing at inspiring the many people in his class. Many people in CS135 have never programmed before, but Tompkins taught in a way that made even the least confident students feel able and competent.
Showing a movie for the 5 minutes before class every day was a good idea, I forced myself to get to class on time multiple times for no reasons besides Lion King. All Hail Mufasa!
- Very engaging lectures, professor is hilarious and clearly loves CS. My favourite course of the year!
- Very funny and good lectures.
- Very humorous and engaging, but still manages to be informative and stay on topic. Gives great pointers and precautions.
- Very interesting explanation.
- very interesting prof and explain everything very well.
- Willing to go through examples in class with the class as a whole and not just reference the slides
- Witty and helpful. Makes the course fun.
Please make constructive comments about anything in the instructor's technique or style that could, in your opinion, be improved. |
- Change dry examples from the course.
- Dave explains everything in a funny and interesting way.
- Dave speaks a little fast
- Dave's pretty awesome.
- do more light sabers
- Everything was fine.
- Everything was good.
- Generally pretty good, could given more complicated examples in class.
- Great technique and style.
- He could explain the slides a bit more.
- He should be slower in certain difficult points like mutual recursion.
- I honestly don't think there is really much that he could actually even improve on, given how excellent his teaching was. If anything, just more light sabers and the amazing voice acting! (Don't break your voice though)
- I hope the instructor can provide some hints for assignment questions.
- I personally LOVE the coded examples done in Racket, I would personally like to see more of this and MORE steppers because our 2 midterms and presumably the final would too.
- I was disappointed that day when we couldn't watch Lion King because someone stuffed the podium with cheese.
- It's perfect! :)
- Just a little extra clarity in explaining some of the later examples (although the professor has many times explained how the examples themselves were not the best to use and would be changed were it up to him).
- Maybe do some extra examples outside the course notes could help.
- '() <- my idea
- My Neighbour Totoro needed!!
- NA
- No comments.
- No comments. He is an excellent prof.
- None
- None
- nothing
- Nothing
- Nothing
- Nothing to be improved.
- Nothing. His teaching strategy was extremely adequate.
- Only feedback is to have more steeper problems. Otherwise, keep doing what you're doing!
- Perhaps going slower on certain harder concepts (abstract functions, lambda) would have helped
- Perhaps spend a bit more time on stepper problems and clarity on lambda functions.
- shorten the slides, decrease some repeated functions or useless descriptions. it's hard to find info.
- some examples could have used more explaination and done more clearly, i.e. initial trees lecture, normally 8/10. 10/10 with further explaination and rice
- Sometimes cuts students off when they are asking questions. Does not seek class participation very often - unless we catch him making a mistake.
*The Esc+P trick was never taught in class. I was wondering how it was done until we were shown the trick in tutorials. I never would have figured out that it was not actually a Ctrl command.
- Sometimes talks a little quickly, though the lack of need for taking notes greatly diminishes the seriousness of this issue.
- Spend more time on actual working examples rather than on slides.
- What is there to be improved on when it is already perfect
But the audio should be improved faster
- Would very occasionally stress and reiterate concepts that need not be reiterated. Asking for a show of hands on who understands the particular point might be an effective method to combat this. However, most of the times when Dave Tompkins stressed a point, it was for good reason and done the right amount.
What were the strong points of the course? |
- A lot of clicker questions to help the courses.
- Although there were a lot of assignment questions and it was tough, it was necessary for students to learn.
- As painful as it was to learn/use Racket, lists, and recursion for tasks that could be far easier completed using a more modern language, it certainly forces you to understand the concepts since there are no crutches, like variables, arrays, and iteration, available. I do believe that's the point of CS 135.
- Assignments were designed well so that students would understand the material better. Classes were well taught. Concepts were very interesting.
- Assignments were fun and interesting without being too challenging.
- Because we used functional programming, the content was fairly new and engaging for students of all backgrounds and skill levels
- Bonus questions.
- coding
- Course manages to make a transition to Racket not feel overwhelming. Additionally, course material is more conceptual. I feel like I am working smarter rather than trying everything until something works.
Assignments are interesting and relevant to course material. Difficulty of assignments encourage us to better understand course material.
Clickers are a great way to encourage class participation.
- Dave Tompkins, and The Lion King
- Dave was very helpful.
- Dave's teaching style was very diverse, he included clear spoken lectures with coded examples and even drew some diagrams like trees when we started to learn them.
- everything
- Functional abstraction, Trees
- Gave a great idea of functional programming to students whether they have programming background or not.
- Good understanding in functions
- Graphs, Binary Search Trees and Abstraction
- HAVING DAVE AS AN INSTRUCTOR!!!!
- Humor, depth, engaging, and interesting. A few of the strong points that has been demonstrated by this course.
- It helps me to build a logical mind and get to know how computers think
- Learn how to systematically build a function. Make us a logical mind.
- Learned a lot of basic skills that you will need for future cs courses. I know that this builds a good foundation for cs students and teaches you to think in a problem-solving way.
- learned a lot of new things
- Learning recursion so thoroughly and being instructed in a fun way.
- Lectured flowed in an extremely logical manner. The Course is laid out in very nice way in that it makes it easy for students to learn the material. There are no "vague topics" in the course. Concepts are covered extremely thoroughly.
- Lectures were clear and engaging.
- Lots of feedback, examples, and effort by the instructors and tutorials to get you understanding the material at a good depth.
- Movie clip showed at beginning, overall kept everyone well engaged, inspired us and filled us with determination
- No comments
- Some of the assignments were really fun to do as they had fun questions.
- Teaches data structures and recursion well
- Teaches the basic concepts of programming well
- The assignments and lectures.
- The material is very easy to understand after taught by the prof. Very humorous and intellectual teaching style.
Also, the change in voice for the mutual recursion should definitely be continued. Do have water next to you next time so you don't lose your voice
- Tough questions which require a lot of problem solving. I found racket great for learning programming.
- Very interesting and fun.
- Very interesting fundamental concepts of computer science.
What were the weak points of the course? |
- Abstract list functions
- Admittedly design recipe can be very helpful, but having to do it for every function got very tedious and unnecessarily time-consuming. Style guide could be a bit more specific. Sometimes the "test coverage results" were kind of too nitpicky for my liking.
- Assignment 9 was hard, given the complexity of lambda, it gave us a bad time
- Assignment 9 was the worst by far. Some questions had too many restrictions and were very closed-ended.
- Assignments are a little bit to hard and the course covers too much modules than cs115.
- assignments at the end of the term proved challenging
- Assignments far too long to complete in a reasonable amount of time, and also at times a bit more complex than I believe is needed to understand the concept. For some questions, it felt more like the writers were attempting to create an extremely challenging question rather than a helpful question. This was the minority of the questions, however. Also, the rigid design recipe was a time waster, which I believe could be better used in understanding the coding practices. I believe that code should be marked for being understandable and correct, not for following a rigid formula of style.
- Classes only being two times a week made it very difficult to remember last lecture's content. Tutorials were not taught well or reinforce ideas properly. A lot of time was spent on easy concepts (before trees) and I think we should have gone through those concepts faster.
- Design recipe
- Design recipe is unrealistic, and should be reduced.
- Design Recipe.
- Every now and then an iffy example will show up that doesn't really clearly show what it's trying to show.
- far too time consuming
- I can't remember
- I found that some assignments became very hard all of a sudden. I got through it and learned a lot, but it took 24+ hours and there were no directly helpful examples taught in class.
- idunno
- lambda, and the uses of lambda. I felt that there was little coverage on this function- and I struggled a lot with one of the assignments even after using the slides, online resources and the textbook. It would have been nice to see more examples.
- lambda, and trees and the number of test cases required for specific functions
- Language is not very applicable to real work, but I understand that it's the concepts that count.
- N/A
- No comments
- None at all.
- nothing
- Nothing
- Nothing, everything was good.
- Occasionally too difficult
- Only two classes per week.
The clicker questions always tricky.
- Quite a bit of focus on stepper questions on tests but almost not instruction on them in lectures.
- Since this is a required class for certain majors, there isn't much motivation to do this course, but Dave made everything more interesting for a lot of people.
- Some assignments were a bit too difficult and stressful.
- Some assignments were a bit too hard to do.
- Some of the earlier lectures were pretty boring, to be honest, for someone who already had experience with programming. That's not really something that can be fixed though, since not everyone taking the course starts at the same level.
- The class is a bit too long for this large amount of materials. I lost my focus sometimes when the materials are too overwhelming.
- The clicker questions all but disappeared by the end of the course, removing a valuable self-assessment tool.
- The Doctor Racket hat needs to exist in real life!
- The stepper is so confusing, more examples need to be provided
- There is a sudden increase in difficulty at around module 8. Assignments suddenly get a lot harder at that point.
Later assignments were very vague and had unhelpful examples. This is most exemplified in assignment 08. In question #3, nowhere does it state that we are required to count replies of replies, and the examples do not clarify that. It had to be clarified on Piazza, which shows how unclear the question is.
Some material did not feel useful in the slightest. I never used template functions nor did I ever find them necessary or helpful.
Tutorials are not very well organized. Gives "group problems" but we do not work in groups. We do not have enough time to work on them thoroughly either. Thus, tutorials are not very helpful. This is proven by the number of students who show up for tutorials on week 1 compared to on week 10.
- Too hard, the assignment is too much that i have time to review after doing it.
- Too much material especially the second half of the course when it transitions from locals to lambda.
- Too much material given too fast. It was hard to learn all the concepts. There's still stuff that I don't fully understand and some assignments were poorly organized. The assignment with trees was useless and I still don't know how to use trees or their purpose. Also, assignment 9 was way too hard, I barely understood the concepts and had to implement them in complicated code.
On midterm 2, the stepper problems were too hard and the overall exam was too long.
- Too much on design recipes
- We spent a bit to much time on introductory material leaving perhaps not enough time to cover more advanced concepts.
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. |
- Absolutely positively effective. Everyone fall in love with CS after hanging out with this prof. Also thank you for the empathy when we have a long hw assignment.
- Dave always managed to keep everyone laughing and engaged in class. His humour seemed to bring everyone together.
- Dave is a cool, funny, respectful guy, and he creates a very comfortable, relaxed class environment that lets us all focus on the course material while having fun.
- Dave was helpful, students in my class very active.
- good class atmosphere
- Great attitude by the professor and the students, made the class a pleasure to attend.
- No
- No
- No
- No comment
- No comments
- No opinion
- No such disturbances exist
- No, all the instructors and students are nice.
- No.
- None at all.
- nop.
- Nope. No discrimination.
- Nopeeee
- Not in my opinion
- Not in the least.
- positive
- Positive atmosphere were created by instructor. Excellent
- Positive.
- Positive. Dave made the classes fun and enjoyable
- Positively by both instructor and students.
- Positively, Dave is a funny guy.
- Positively.
- The atmosphere was cheerful because Dave is always funny and full of energy.
- The class atmosphere was a little bit tense initially due to it being a first year class, but through Dave's humour and interactivity, a nice environment was created that allowed strangers to make friends with other people.
- The class atmosphere was always good.
- The class atmosphere was definitely positively affected by the instructor's attitude. Dave came to every lecture in an extremely good mood which in turn made the students eager to learn. It was a very happy atmosphere.
- The classroom was affected positively by attitudes of the instructor.
- The instructor is really funny, so the atmosphere is positive.
Any other comments, e.g., class size, suitability of room, noise level, etc. |
- Class size is just right, Room had audio issues, Noise level was at minimum
- Class size keeps getting exponentially smaller. Worst case I've seen in all of my classes so far.
Floor elevation was not steep enough. Had trouble seeing over tall people's heads. This is in particular if they had really weird hair.
People who use Reddit during class time are mildly distracting.
The audio in Physics 150 took too long to get fixed.
- Class size was fine
- Class size was good, could be smaller. The room was great and there was almost no noise.
- Class size was perfect but chairs were too comfy, always fell asleep in class.
- Dave is perfect. <3
- Fold-out tables were too small for my laptop. Would've liked a different room with proper tables
- good
- good job Dave
- Good. Very Good.
- Great class
- I enjoyed the free food.
- I loved this class even though I suck and feel bad about it. Thank you prof for everything!! :D
- I thought the class size and room (PHYS 150) were perfect for the course; the room was small enough to comfortably read the slides, and the class was small enough that anyone could ask questions.
- Lecture was a good size, room was suitable and comfortable.
- n/a
- NA
- No comments
- No problem here
- No.
- Perfect really, the class wasn't big and there wasn't any noise.
- Pretty good class, i enjoyed the first cs course in university.
- Room was cramped.
- The chairs in Physics 150 are very comfy,
- The class room was very cramped, small and dark- but I guess that's because it was an old building. (Phys Building)
- The class size is reasonable, but it will be nice if we get to switch seats so we can get to know more people. I still have no idea who is in my cs class up till this point.
- The classroom is too close that make me feel sleepy because the lack of oxygen.
- The PHYS classroom was kinda cramped. The Lion King movie was a nice touch - made me really want to be punctual. Also my friend is a big fan of Dave's YouTuber cousin, so she's jealous of me now
- The room was a good place.
- We were in the PHYS150 room and the class was always packed. There isn't much space in between each seat and also between rows, but this is the fault of the room and not much can be done. PHYS was a rather quiet building, so there were little to no distractions during lecture hours.
I continued my popular tradition of showing 5 minutes of a movie before each lecture. This term the students voted for The Lion King (Sec 001) and The Lego Movie (Sec 005).