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: 42 / 87 (48%)
The instructor(s) helped me to understand the course concepts. |
Strongly Disagree | Disagree | Neutral | Agree | Strongly Agree | No Basis for Rating |
| | 1 | 6 | 35 | |
| | 2% | 14% | 83% | |
The instructor(s) created a supportive environment that helped me learn (Supportive environments enable students to feel included and valued regardless of any aspect of their identity). |
Strongly Disagree | Disagree | Neutral | Agree | Strongly Agree | No Basis for Rating |
| 2 | 2 | 6 | 32 | |
| 5% | 5% | 14% | 76% | |
The instructor(s) stimulated my interest in this course. |
Strongly Disagree | Disagree | Neutral | Agree | Strongly Agree | No Basis for Rating |
| | 2 | 6 | 34 | |
| | 5% | 14% | 81% | |
The intended learning outcomes were identified (Learning outcomes/objectives articulate what students should be able to know, do, and/or value by the end of a course). |
Strongly Disagree | Disagree | Neutral | Agree | Strongly Agree | No Basis for Rating |
| | 1 | 15 | 26 | |
| | 2% | 36% | 62% | |
The course activities prepared me for the graded work. |
Strongly Disagree | Disagree | Neutral | Agree | Strongly Agree | No Basis for Rating |
| | 2 | 20 | 19 | 1 |
| | 5% | 48% | 45% | 2% |
The intended learning outcomes were assessed through my graded work. |
Strongly Disagree | Disagree | Neutral | Agree | Strongly Agree | No Basis for Rating |
| 1 | 3 | 18 | 20 | |
| 2% | 7% | 43% | 48% | |
The course workload demands were... |
Very Low | Low | Average | High | Very High | No Basis for Rating |
| 1 | 19 | 17 | 4 | |
| 2% | 46% | 41% | 10% | |
The instructor(s) helped me to understand the course concepts. |
- [Strongly Agree] All the analogies for concepts: low Dave high Dave for mutual recursion, OG dave for simple recursion, roar for rror, were absolutely the best. CS would have been a lot harder without them.
- [Strongly Agree] I like how Dave teaches and shows examples first and then slowly goes over the slides.
However on Piazza sometimes the answers to your questions don't really answer your question
The instructor(s) stimulated my interest in this course. |
- [Strongly Agree] Dave is a great instructor and makes the course funny with his amazing jokes!
- [Strongly Agree] Dave Tompkins has a very intuitive and interesting way of explaining CS135 concepts during lectures and also often addresses why things we were doing in the course are useful in a broader sense.
- [Strongly Agree] Dave was very engaging and quite clear. Awesome
- [Strongly Agree] High-voiced Dave and low-voiced Dave are the best possibly way to understand mutual recursion.
- [Strongly Agree] This was my favourite course for this term, and that's mostly because Dave was an awesome instructor. Unlike in high school, CS was both too hard and boring for learners with no experience in CS. I did find parts of CS135 challenging, but because of Dave's unique style of teaching, I never stopped being interested in what the next CS lecture would teach me. Finally, I can say that CS is currently my favourite course of study, and I have to thank Dave for that.
The intended learning outcomes were identified (Learning outcomes/objectives articulate what students should be able to know, do, and/or value by the end of a course). |
- [Strongly Agree] Great course to understand and learn recursion
The course workload demands were... |
- [Average] I think the Friday examples should be due at a later time, not 8am
Note: This is a complete list of comments I received, listed alphabetically to avoid bias.
The most important thing I learned in this course was: |
- aside from the content of the course itself I learnt the importance of starting assignments early.
- Attention to examples gone through in class
- coding
- Concepts from functional programming, which I had never worked with before since I was only used to imperative languages
- CS concepts
- Data Structures, without the stress and burden of classes and OOP
- Different ways of solving coding problems while also writing clean code and not just anything.
- functional programming, and a different perspective on writing code
- Getting hands on codes is the best way to learn
- good codes are efficient
- How to use racket.
- I learned new functions and their specifil uses in drracket
- Most of the time, you have to trust the recursion, and it's VERY important to follow the data definition.
- Racket
- Racket language (recursion)
- Recursion
- Recursion
- Recursion and Binary Trees.
- recursion and higher order functions
- Recursion probably.
- Recursion, because in other languages you don't need to understand it with as much details as you do for racket.
- Recursion.
- The nature of functional programming languages and how they can be used to understand computer programming more generally.
- Time management
- Understanding recursion, types of recursion, and how it all works
What helped me to learn in this course was: |
- As much as it was slightly annoying, the Friday example submissions helped a lot because they made sure I started looking at the assignment beforehand.
- assignments
- Assignments are well designed and helped a lot
- Copying the example codes presented to me in class
- Dave is a very funny and enthusiastic instructor. I find myself engaged to his lecture which definitely helped with the learning. The examples on the slide are great. The Piazza threads were helpful when I got stuck on assignment question because there are always people that have asked the questions I wanted to ask before me.
- Dave's examples were very helpful in understanding the concepts and always engaged the students in the lectures
- Dave's lectures helped me a lot to learn in this course. The weekly assignments also adequately helped me to learn in this course.
- Dave's lectures supplemented with course notes.
- Dave's teaching style, hes hilarious at times and somehow delivers the course contents well
- Dave, in the lectures that I did attend. Also the cs 135 website is phenomenal.
- Direct application of course content through assignments, reading through and studying course slides, and the lecturer's intuitive in-class analogies.
- Doing the exercises in the slides.
- Engaging instructor and good course notes
- Going through the PowerPoints. The tutorials were not very helpful since they were a bit short and we couldn't complete all the questions for tutorial.
- how engaging the lectures were. It certainly helped me retain concepts easier even if the topic was not as inherently easy follow.
- I liked the in class code writing examples, and the analogies were a nice way to show the thought process involved
- Just doing the assignments and revisiting the slides was a good way to learn.
- Lectures, slides, stepper questions, and assignments
- modules
- our instructor explained us the course very well
- Studying and practicing playing in code.
- The analogies that Dave made. He used high and low voice, OG Dave and recursive Dave, and all those really helped me the concepts.
- The CS 135 Website.
- The Instructor's classes were really engaging and fun. This helped me stay focused.
- The lectures and the assignments.
- The online slides
- the prof and the uploaded slides on the cs website
- The way how you teach helped me a lot to understand everything :D
- The weekly assignments and study modules
- Using racket.
What changes, if any, would I suggest for this course? |
- All good
- Allow students to type on a computer when doing the midterm and exam.
- I think if the course went covered some more examples of tough topics it would be helpful.
- I would add more different types of examples similar to the difficulty of our assignment questions
- In addition to the weekly assignments, I would suggest providing some more practice questions to prepare for tests.
- Looking at all the examples at once then looking at the slides was overwhelming sometimes. A slower pace would be nice. Also giving the students a question and then giving them maybe 2 minutes to at least think of the solution and its approach will be useful, because we can understand what we are missing that you know.
- N/A
- N/A
- no
- no changes
- none
- None
- None that I can think of.
- None, I think its good
- None, the course seems very fair to me.
- None. Dave is dope!
- Not using racket.
- Nothing. GOAT Prof
- shorter assignment
- Some more written practice would be nice for the exams, all our assignment are online so the only written practice we have are the sample exams
- Some of notations on the slides are confusing. Maybe less stepper questions because I remember Dave saying that we are not going to use it anywhere else so I find it both useless and annoying.
- The exams should be on computer and not written.
- Use a more recent functional language.
- Using a different online grading system may be beneficial to students as MarkUs can be somewhat difficult to use (for instance, assignment results are poorly displayed and difficult to read) and the software will often crash or take a very long time to evaluate programs. Otherwise, I found the course very well organized and have no other changes to suggest.