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: 95 / 117 (81%)
Evaluate the organization and coherence of the lectures. |
Excellent | Good | Satisfactory | Unsatisfactory | Very poor | No opinion |
73 | 20 | 1 | | | 1 |
77% | 21% | 1% | | | 1% |
At what level were the instructor's explanations aimed? |
Too high | Somewhat too high | Just right | Somewhat too low | Too low | No opinion |
4 | 16 | 68 | 6 | | 1 |
4% | 17% | 72% | 6% | | 1% |
Evaluate the instructor's treatment of students' questions. |
Excellent | Good | Satisfactory | Unsatisfactory | Very poor | No opinion |
71 | 21 | 2 | | | 1 |
75% | 22% | 2% | | | 1% |
Evaluate the effectiveness of the instructor's visual presentation (blackboard, overheads, etc.). |
Excellent | Good | Satisfactory | Unsatisfactory | Very poor | No opinion |
65 | 27 | 1 | 1 | | 1 |
68% | 28% | 1% | 1% | | 1% |
Evaluate the effectiveness of the instructor's oral presentation. |
Excellent | Good | Satisfactory | Unsatisfactory | Very poor | No opinion |
80 | 13 | 1 | | | 1 |
84% | 14% | 1% | | | 1% |
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 |
23 | 13 | 8 | | | 46 |
26% | 14% | 9% | | | 51% |
Did you find the course interesting? |
Very Interesting | Interesting | Not interesting | No opinion |
51 | 38 | 6 | |
54% | 40% | 6% | |
Evaluate the overall effectiveness of the instructor as a teacher. |
Excellent | Good | Satisfactory | Unsatisfactory | Very poor | No opinion |
78 | 15 | 1 | | | 1 |
82% | 16% | 1% | | | 1% |
What proportion of lectures did you attend in this course? |
90-100% | 75-90% | 50-75% | 25-50% | < 25% |
84 | 6 | 3 | | 2 |
88% | 6% | 3% | | 2% |
Was the assigned work (assignments, projects, etc.) helpful in learning the course content? |
Very helpful | Helpful | Not helpful | No work assigned | No opinion |
56 | 36 | 3 | | |
59% | 38% | 3% | | |
Were the printed notes (if any) helpful in learning the course content? |
Very helpful | Helpful | Not helpful | No printed course notes | No opinion |
28 | 37 | 5 | 18 | 6 |
30% | 39% | 5% | 19% | 6% |
Was the required textbook (if any) helpful in learning the course content? |
Very helpful | Helpful | Not helpful | No text required | No opinion |
5 | 15 | 24 | 29 | 20 |
5% | 16% | 26% | 31% | 22% |
Did the course introduce an appropriate amount of new material? |
Too much | Somewhat too much | Okay | Somewhat too little | Too little | No opinion |
2 | 24 | 63 | 3 | 1 | 2 |
2% | 25% | 66% | 3% | 1% | 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 |
9 | 32 | 52 | 1 | | 1 |
9% | 34% | 55% | 1% | | 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 |
| 33 | 38 | 18 | 5 |
| 35% | 40% | 19% | 5% |
Evaluate the organization and coherence of the lectures. |
- [Excellent] I can see the effort and preparation you put into preparing each lecture. It's so awesome to know that my lecturer goes through the content of what he is about to teach before he teaches me. So amazing.
At what level were the instructor's explanations aimed? |
- [Just right] I love the way you code in Dr.Racket before reviewing the code on the slides. That's just great!
- [Just right] somewhat he goes too fast on the lectures
Evaluate the effectiveness of the instructor's visual presentation (blackboard, overheads, etc.). |
- [Excellent] I love the way you use your stylus to make your slides so colorful. That really makes complicated code much easier to understand.
Evaluate the effectiveness of the instructor's oral presentation. |
- [Excellent] Easy to understand, even though english is not my first language.
- [Excellent] very loud clear voice, can hear clearly from the back. awesome accent.
Was the instructor available for help outside of class? |
- [I did not seek help] Try to be nicer outside of class dude, i said hi to you on numerous occasions in the halls and you just mumbled. Love you man
Did you find the course interesting? |
- [Very Interesting] Best 1A course.
- [Very Interesting] You made CS my wife!
Evaluate the overall effectiveness of the instructor as a teacher. |
- [Excellent] The movies before class, that's awesome! It makes me look forward to the day where I have your class. It's the only time I get to de-stress. The way you teach us new concepts is just great. I love the sneak-peek content of the course, you should show us more cool stuff we can do in future courses.
What proportion of lectures did you attend in this course? |
- [90-100%] One of the only classes i was actually eager to go to.
- [90-100%] Why would I skip class? I get to watch movies. :D
Was the assigned work (assignments, projects, etc.) helpful in learning the course content? |
- [Helpful] I wish lectures were slightly harder to prepare us for the assignments. The slides for Module 8 - Trees were relatively simple in lectures, but the assignment was just overwhelming. It would be good if the lectures were more comprehensive to prepare us for the assignments.
Were the printed notes (if any) helpful in learning the course content? |
- [Helpful] Some additional detail on the notes would be nice
Was the required textbook (if any) helpful in learning the course content? |
- [Helpful] Used it a couple times for studying
- [No opinion] Didn't use it at all, cannot comment.
Did the course introduce an appropriate amount of new material? |
- [Okay] I find that too much time were taken to cover Modules 1 - 5. More time should have been spent on Modules 8 - 12.
- [Okay] Luckily for me, I had done programming before. I feel like if I had not, then this course would be extremely difficult.
- [Somewhat too much] It seemed like a lot but that's only because I've never done any programming before.
Was the amount of assigned work required for the course appropriate? |
- [Okay] They were challenging sometimes, but i learned a lot from them.
- [Too much] Assignments took way way too long! I respect a decent workload during the week for all my classes and SOME on weekends, but literally a lot of my weekends were done doing ONLY CS assignments. I realize this is good practice but, surely I can devote my weekends to something other than one out of my five courses in the term?
On average, how many hours per week did you spend on this course outside of lectures? |
- [11-15 hours] most of the time on doing assignments
- [7-10 hours] Mainly on 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. |
- Awesome jokes, sweet stories, passionate about the course
- awesome, fun lectures. great analogies and examples
- Best instructor NA. Very interesting and enthusiastic about the course.
- clear & thorough explanation, easy to follow
- clear explanation, funny way to present the course material
- Course notes were complete and very helpful; the professor also had good oral communication and was easy to understand
- Dave always kept the class interesting and made me want to come to class
- Dave introduces CS well to new programmers. As a new programmer,he made me feel like I wasn't at a disadvantage and that I could still be successful. He also is very good at answering questions, repeating complicated information, and walks through his live coding very nicely.
- Dave is such a hilarious and effective prof. I enjoy being in his class even though I often struggle in the course.
- Dave made the course extremely interesting, even if I didn't like the material itself
- Dave was a great teacher 10/10
- Dave was very engaging with how he presented material and was able to hold my interest in what I was learning. These lectures were one of the best in my fall term where I was able to enjoy what was being taught.
- Did a good job explaining concepts and made class interesting and fun.
- Doing examples
- Engaging
- Every single one of the lectures was very interesting. The best one was when Dave brought his Lightsaber
- everything
- Excellent experience, my favourite lecturer this term. Knows how to engage students and keep them focused. Excellent use of non-technical terms to explain course material.
- excellent lecture presentation
- Explained things very well and in detail.
- freebie clicker questions!
- Friendly, outgoing. Teaches this course well
- Fun course, fun teacher, fun life
- Funny, engaging, well-spoken, knowledgeable instructor.
- Gallus Gallus!
- Going back and forth between notes and doing examples in Racket helped. Clicker questions show whether you actually understand or not. Dave is hilarious even if he's not George Clooney.
- Good explanations, did a good job of making things interesting and fun.
- - Good lectures
- Explaining stuff
- Great explanations & examples. & I like his enthusiasm.
- Great oral presentation !
We have lots of fun during the lectures lol
- He always makes class interesting and shows many examples. I really enjoy the fact that we can finish a movie by coming to class early too.
- He explains course materials very clearly and he's clicker questions are fair
- He has definitely kept things interesting and fun.
- He is funny, engaging and he cares about his students.
- He provides examples that are very easy to understand and he slows down to explain difficult topics. Pays a lot of attention to detail as well.
- He tries to make the class engaging
- He was able to grasp the audience's attention and ran a very fun and enjoyable lecture
- He was interesting, was an animated teacher and used humour
- His way of expressing/giving lecture were really interesting. Best prof i have had yet. 10/10 would take him for my future cs courses.
- I love the genuine interest you show in teaching us. The way you 'entice' us to your class with your movies, your squeaky voices to help us understand the materials, your sneak-peek review content that excites us. All these has not only made me fall in love with your class, but made me like programming itself.
The way you teach new concepts but first typing it in Dr.Racket, followed by reviewing the code on the slides is just great.
- I really like the movie before class.
- I think the delivery of information is Dave's strongest ability. From enthusiasm, to clarity all aspects of his presentations of various concepts and examples was fantastic.
- I thought the lectures were normally well-paced, and I would be very happy if I were to have Dave as an instructor again. Dave was very engaging in his lectures, and seldom was the material covered such that it made the material dry.
- interesting and attractive lecture
- Kept class interesting using good reference and jokes that applied to content
- Lectures are always very interesting and engaging. He answers people's questions very well.
- light hearted atmosphere, feels comfortable.
- lot of good examples
- Made it a funny and interesting course
Clicker questions helped reinforce course material
Explained concepts thoroughly; made it easy to understand
- Made the lectures fun
- -> (make-struct good-prof (engagement knowledge niceness clarity))
-> good-prof? dave
-> true
- Prof. Tompkins' humor, knowledge and passion towards each lecture assists students' understanding towards the course.
- Really good explanations with coding outside of the slides as well as explaining the slides themeslves
- Shows How to Train Dragons 2 prior to class, fun way to make people attend lectures. Clear engaging explanations, makes class lively.
- Teach.
- the instructor made the lectures both interesting and entertaining while still teaching all of the material well
- The instructor teaches lectures in such a way that makes the material very interesting and easy to understand.
- The instructorhad a lot of enthusiasm.
- The most impressive aspect of Dave was how he was able to keep the students' interests each and every minute of every class. Dry lecture days would be paired with awesome geeky props or interesting acting skills. As a student looking to go into the field of teaching for computer science and math, Dave was truly an inspiration to have!
- This instructor is very friendly, and knows the material thoroughly. He makes learning computer science fun
- Used two different voices and a hat to describe mutual recursion. Really funny and helpful.
- Very enthusiastic about the course. Kept everyone engaged.
- Very funny
- Very good and funny lectures. Materials well explained.
- Very humorous, explains the examples to every detail, always answer questions students ask.
- Very interesting
involve actual application of the language
- You are a very humorous guy and your explanations using codes and slides are really clear. I never feel boring in your classes. Overall I love your classes!!!
Please make constructive comments about anything in the instructor's technique or style that could, in your opinion, be improved. |
- - A bit more emphasis on why Racket vs. other programing languages
- A little more time should be given on clicker questions.
- Can be more clear on what's important during the tests
- Can be too fast at explaining material at times.
Would appreciate if he kept in mind that students might need some time to write down the material and process it.
- Could do more examples on the hardness of the homework questions
- could maybe talk a bit slower during some of the higher level explanations
- Dave is awesome. Nothing to be said here. :)
- Dave's perfect
- Don't rush through some difficult concepts like (define f (lambda (x) (sqr x))) vs. (define (f x) (lambda (y) (sqr x)))
- Drink less diet coke. It's not good for you! But otherwise, keep doing the amazing work you are doing.
- Everything is perfect
- give handouts containing in-class Racket code that is not in course note
may spend more time explaining trickier parts like lambda stepping rules, and quickly go over relatively easy contents
- He should post in-class problems that he does on the posted lecture slides. They can be more insightful and it would help to have notes of them for future references.
- I can't think of anything.
- I don't have much to say. His style of teaching was perfect for me.
- I feel more "do you understand" clicker questions could really help since sometimes I was too embarrassed to raise me hand so instead just nodded along
- I found a few sections to be a bit weirdly explained (eg. Structures) at first, and didn't really get them until I found better examples.
- In all honesty there is little that I could think of that would improve the instructor's lectures.
- include more detail steps for each example fuction
- Less racket, more java :)
- Lift.
- Maybe go over some harder examples in class and talk about the thinking behind xreating the code.
- Maybe make some of the jokes less corny but most are cool.
Definitely dress up like a class
- more freebie clicker questions!
- n/a
- N/a.
- no
- No problem with him.
- none
- None
- None that I can think of
- None- keep doing what you are doing!
- None.
- Nothing
- Nothing
- Nothing
- Nothing comes to mind.
- Nothing to change!
- nothing.
- Perhaps, posting past midterms to aid in studying for the midterm and final.
And also trying not to rush through material.
- Please drink less coke zero, I love too much
- Please give him more money to finish the light sabre fight.
- sometimes went too fast, skimmed over things I did not understand
- The explanation of a few topics could have been a bit clearer
- Too difficult to answer.
- Try and relate lectures more to the assignment
- Well done Dave!
What were the strong points of the course? |
- A great course as an introductory course into CS.
- Changed how students visualized or thought about coding.
- Currying. Functional abstraction.
- Everything, except trees and abstract function stepper problems, were the strong points.
- exercise programming mind
- Fun, clear real-world applications, helpful course notes, fair midterms, well-designed assignments
- functional programming
- Funny, interactive.
- Good and interesting explanations that make me understand the materials
- Good examples
- Good gradual increase in difficulty, easy to succeed
- Good idea introducing recursion this early, lots of CS concepts covered
- Great assignments that made you think
- I found the assignments to be very good assessments of our learning.
- I like how we started from the very fundamentals and grew. The fact that everything we learned was motivated by Dave was also great.
- Interesting
- interesting and easy to understand
- Interesting introduction to functional programming.
- interesting new view on math.
- Introducing a lot of important concepts of computer science
- Intuitive approach to functional programming.
- it improves my logical thinking
- It was fun!
- It was really fun and interesting
- Learn some interesting algorithms !
- Learned a lot about racket, and computer science overall.
- Learning a functional language was interesting
- Learning how to program in a different style.
- Lectures were consistent in teaching a good amount of material so I was always able to learn something new from each one.
- Lists, cond, local, helper functions
- Lots
- Lots of interesting material
- Much recursion, very cond. wow.
- none
- Overall interesting course
- Recursion, data driven design, lambda.
- recursion...
- some cool concepts: starting out with a functional programming language was something completely different from other programming languages
- Taught me functional programming pretty well
- Taught the basics of computer science.
- teaches a lot, interesting and entertaining lectures, assignments are meaningful
- The ending was interesting. Started slow and got faster.
- the instructor :D
- The interesting bits where it was easy to see that we were learning.
- This course provides a challenge for those who already have had experience programming, whilst still being attainable to someone who has just begun programming.
- Using all kinds of recursions.
- Very fair midterm exams. We were well prepared with previous exams, tutorials, and course material to do well on the exams.
- Very interesting and practical topics.
- very interesting course material, delves in to topics that would take much longer to reach using a more traditional programming language.
- Very interesting. My passion.
- Watching the movie for the first 5 minutes as it woke everyone up.
What were the weak points of the course? |
- Assignment 7 was way too hard, conceptually! I managed to do the questions but I had no idea what my functions were really doing "behind the scenes"
- Assignments took much longer than I would have liked.
- choosing Racket as teaching language is a little bit odd.. might use Haskell instead
emphasizing too much on stepping poorly written codes, i.e. tracing for tracing, not tracing for debugging
- Class length
- Clicker Questions, Assignments were too weirdly worded
- Depth of teaching stepper rules felt unnecessary
- Design Recipe (ate all my marks in assignments) and steppers (ate all my marks in midterms)
- Design recipe is a painful/tedious experience that takes at least 2x amount of time taken to write code. Makes writing code a far less enjoyable experience.
- design recipe!
- DESIGN RECIPE. WHY. TT_TT
TESTS. WHY. TT_TT
RACKET. WHY. TT_TT
- Fast paced for me since I never took any cs before.
- I find too much time was given for Modules 1 - 5. It would be great if there was more time to digest the more difficult modules, especially modules 8 onwards
- I found the midterms to be a bit long. Most of the students in my room were unable to finish their exam. I think at least maybe 15-20% or so should be able to finish in the allotted time. I, for one, would have no problem having an exam that is scheduled to be 3 or even 3.5 hours if there's more that you want to assess us on, but, in general, I found the time to be a bit short.
- Kind of tough for kids without CS experiences.
- Lambda and map sort, etc went by too fast and was confusing.
- Lambda stepper problems are very mysterious
- Later assignments were significantly more difficult than the earlier
- Long assignments!
- Maybe it is better to have exams using computers?
- maybe to much emphasis placed on comments and the design recipe for marking assignments as opposed to the actual code
- no
- none
- None
- None.
- not detail enough , too fast
- Not enough assignments or content.
- Notes could be a bit more detailed.
- Perhaps the beginning, as I came from Python in high school. It was a little tough to transition to a functional environment.
- Racket
- Reality that uni is hard
- Some assignments were disproportionately more difficult than others. I would have also liked to spend a bit more time on the concepts in the second half of the term.
- Some implementations of things seemed clunky, like the structs with lists to represent trees.
- sooometimes assignments were tedious mechanical tasks. Usually fun otherwise though.
- The assignments sometimes took quite a while to finish.
- The course goes a little fast sometimes.
- The Language we had to learn and the principles of coding in that language that we had to follow
- The last questions in the assignments were always too hard/ long and the second midterm was too long
- the lectures were just writing down the textbook proofs/examples on a whiteboard. not much new insight gained from attending a lecture other than the ability to ask questions after class or spending more time thinking about math135 (more than you would do alone at home).
too many theorem acronyms that it starts to get a bit exhausting and ridiculous.
- The main weak point of the course was during the lectures about trees. I felt that trees were covered too quickly. I also feel that the late-course stepper problems were not covered very well.
- The pace was slow
- the required testing
- The second midterm was too long. I would have done significantly better but I just ran out of time.
- The weak points of the course would be learning a new type of programming style and the work load.
- The work requires too much unnecessary work with the design recipe and the assignments are worth too much of the course mark i think.
- There is a slight lack of relevance to the real world. Perhaps towards the end of the term the assignments could have suggested projects students could complete using the skills they've learnt so far. These would be completely optional and would be very broad ideas, but they would allow the student to experiment a bit more and create programs that could actually serve a real world purpose.
- There is no company using Dr. Racket... Is it possible to find a co-op job with skill as knowing Dr. Racket??
- Too much content for a beginner
- Too much emphasis on design. Comments are important, but there was too much importance laid on them.
- Too much initial focus on simple assignments such as addition/subtraction/multiplication. Doesn't introduce the most efficient ways to code until later. The Bonus questions can be too complicated for students who are not well-versed enough in CS.
- Too much work assigned on a weekly basis, not enough time for other side projects.
- Too picky about design recipe
- TREES
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. |
- (+)
- Above average in this category. I can think of a few examples where Dave would adjust his example to make it more relatable to everyone regardless of gender, religion etc.
- Absolutely positive. Everyone engaged well in class and our instructor was really enthusiastic and kind to us.
- affect positively
- Always had a positive atmosphere.
- Atmosphere was positive and fun.
- Attitudes of the instructor and students made being in class a very positive experience
- Class atmosphere was excellent
- Class atmosphere was perfectly fine
- Good
- I don't know, I sat in front
- I found the learning environment to be perfectly acceptable. Not once did I hear or see any discriminatory behaviour.
- I would describe the class atmosphere as welcoming. Nothing has ever come up that has to do with gender, race, or appearance. Dave always had a positive attitude, and most of the students did too (except for the ones that complained about the Design Recipe)
- instructor made no comments based on gender, race, appearance
- It's great
- It's ok
- N/A
- N/A
- No
- no
- No
- No
- No
- No comment.
- No effect
- No, he kept the class interested most of the time with appropriate humor.
- No.
- none
- Nope, none that I was aware of.
- Nope. It was positive and great.
- Not at all!
- Not really.
- nothing bad
- People using laptops for clicker questions?
- Positive
- Positive energy from instructor
- Positive, everyone felt welcome, and it was a very enjoyable class.
- positively
- positively
- Positively affected Good guy Dave.
- POSITIVELY! I loved being in class, it was a great place to enjoy learning. Dave's semi informal appearance made it easier to open up and ask questions and see him as the friendly prof he is
- Positively: has great respect for all students
- Such a quiet class
- the class atmosphere was not particularly affected by any of the student demographics
- The class was mostly quiet and everyone respected each other.
- The instructor was respectful and polite to everyone, and all of the students respected the instructor and each other.
- The students in the class were generally not as open and friendly as some other classes, but that is unrelated to the course or the professor.
- There have been no positive/negative atmospheric shifts regarding gender, ethnicity, appearance, etc. as far as I'm concerned. From my perspective, the atmosphere had always been positive with a strong focus towards what was being taught.
- Too politically correct (i.e. too much concern for sensitivity over these issues) but better that than too little concern I suppose.
Any other comments, e.g., class size, suitability of room, noise level, etc. |
- Aal gud.
- All generally good.
- all things are OK
- Chairs are so ridiculously squeaky
- Class size could be reduced
- class size/room were suitable
- Classroom could have been better and less run down especially the chairs.
- Classroom is flat, making it hard to see the front from the back of the room
- Dave is an excellent instructor.
- Dave's a cool bro
- Everything about the atmosphere was fine
- Everything was good
- Everything was organized very well
- Good room
- Great classroom, I could see the slides from anywhere in the room. The class size was not too large, and no noise was heard from outside.
- I always made a point of sitting in a particular row near the middle, so I can't really comment on the suitability of the classroom as I was in an optimal seat. As far as class size, I think that it was acceptable, and the students were generally respectful of each other, that is, not talking very much during the lecture. The last thing I wanted to say is that sometimes my workload was such that I didn't get a chance to get much work done on the assignments before the due date (more so near the end of term), and as such, I would have found it really helpful to have an extra hour or two to finish. I would recommend having the assignments due a midnight on the due date since they are being submitted electronically. Overall, I thought the course was well-designed, and I really enjoyed it. Thank you.
- I love Dave
- I think that the course should still include functional programming, however the assignments and examples would be more interesting if they were real-world examples such as the Sudoku and Solitaire. Therefore, we would be using the language to code interesting things that are fun. I personally didn't like the pizza assignments in particular.
- I-clicker questions are sometimes brutal for me.... I am not that smart, so It takes some time for me to perceive the new concepts and knowledge...
- Kinda too large
- n/a
- N/A
- No
- no
- No comment.
- No complaints
- No complaints here
- no space between rows, very little leg room is uncomfortable.
- no.
- none
- None
- Nothing else.
- Overall I loved this class, thank you very much!
- Room was kinda bad, mc 2041
- room was too big; can't see/hear anything if you are at the back
- Some times hard to hear at the back
- Spinning chairs are annoying, room a bit long front-to-back
- The 5 minute movie segments at the start of lectures were nice. Should definitely do this again.
- The chairs in MC4021 aren't very comfortable
- the class size is somewhat too big.
- There's a reason why waterloo is the top comp sci school in Canada!