Course Description:
CS 136: Elementary Algorithm Design and Data Abstraction
This course builds on the techniques and patterns learned in CS 135 while making the transition to use of an imperative language. It introduces the design and analysis of algorithms, the management of information, and the programming mechanisms and methodologies required in implementations. Topics discussed include iterative and recursive sorting algorithms; lists, stacks, queues, trees, and their application; abstract data types and their implementations.
Dave's Comments:
Teaching Evaluations:
Number of Respondents: 25 / 74 (34%)
The instructor(s) helped me to understand the course concepts. |
Strongly Disagree | Disagree | Neutral | Agree | Strongly Agree | No Basis for Rating |
| 1 | | 6 | 17 | 1 |
| 4% | | 24% | 68% | 4% |
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 |
| 1 | 1 | 11 | 12 | |
| 4% | 4% | 44% | 48% | |
The instructor(s) stimulated my interest in this course. |
Strongly Disagree | Disagree | Neutral | Agree | Strongly Agree | No Basis for Rating |
| 1 | | 11 | 13 | |
| 4% | | 44% | 52% | |
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 | 8 | 16 | |
| | 4% | 32% | 64% | |
The course activities prepared me for the graded work. |
Strongly Disagree | Disagree | Neutral | Agree | Strongly Agree | No Basis for Rating |
1 | | 4 | 11 | 9 | |
4% | | 16% | 44% | 36% | |
The intended learning outcomes were assessed through my graded work. |
Strongly Disagree | Disagree | Neutral | Agree | Strongly Agree | No Basis for Rating |
| 1 | 1 | 12 | 11 | |
| 4% | 4% | 48% | 44% | |
The course workload demands were... |
Very Low | Low | Average | High | Very High | No Basis for Rating |
| | 8 | 10 | 7 | |
| | 32% | 40% | 28% | |
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). |
- [Agree] The @99 piazza responses (while I do agree is an extremely good idea), can sometimes be rather scary/discouraging for many students I find.
- [Neutral] Why are piazza answers so passive-aggressive :(
The instructor(s) stimulated my interest in this course. |
- [Agree] Dave made me look forward to classes, that's for sure. He made lectures fun and engaging. However, in hindsight, I'm not really sure how interested I really am in computer science as a whole.
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] I REALLY APPRECIATE THE SLIDES AT THE END OF LECTURES THAT CLEARLY IDENTIFY WHAT THE OBJECTIVES ARE. It's honestly a shame that most courses don't do that.
The course activities prepared me for the graded work. |
- [Neutral] Idk, I kind of just do the assignments. The lectures help, but I don't know exactly how much they really help.
The course workload demands were... |
- [High] As the course content got harder, so did the assignments which just continue to take more and more time.
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: |
- Application and implementation of pointer-based functions/modules.
- C is trash language L + ratio
- C memory and pointers
- C memory model
- Debug is exhausting, but it is worthy of time
- Debugging, and dealing with memory.
- Fundamentals of CS
- How to effectively design an imperative program and implement a simple algorithm.
- How to use pointers and strings in C and learning big O notations. Learning about programing outside of just coding was nice.
- I like the course's emphasis on understanding memory and pointers. Definitely enriches my prior knowledge of cs.
- Learning how to code
- Memory management
- Memory management, pointers, data structures, time complexity
- pointers
- Some basic syntax of the C language and many uses with it, especially dynamic memory and learning the internal workings of how C manages and accesses memory. Overall the content I learned from this course will be really useful for my future CS courses.
- The C language and memory management
- The theoretical concepts such as ADTs, memory, abstraction, etc.
What helped me to learn in this course was: |
- Course notes
- Dave Tompkins in-class analogies
- Dave's Explanations
- Dave's lectures and slides
- Doing assignments and seeing visual representations of the topics we covered
- In-person lessons and course notes
- Lectures in general but specifically when the prof drew diagrams
- Professor Tompkins' in-person lectures were my favourite part of school this year. He did a great job of thoroughly teaching us everything we needed to know, while making it fun.
- slides and assignments
- The course notes were wxcellent and assignments were useful
- The experiential learning from assignments was most helpful for me to learn the concepts introduced in the course.
- The slideshows and the assignments
- The tutorials and excellent teaching style of Professor Tompkins
- The weekly participation quizzes really helped me stay engaged in the course and prepare me for technical questions that may show up on the exam.
- Tutorial solutions and the YouTube videos.
- Visual ways of teaching. Diagrams and such helped me learn and visualize the content better.
What changes, if any, would I suggest for this course? |
- 1. I find that there is a lot of reading to be done every single time we do an assignment (faq, style guide, the assignment instructions themselves). I understand that most software jobs require this extensive reading of documentation, but this doesn't mean I won't complain :).
2. I had the same complaint with cs 135, but I find that the start of the course is rather mundane because we spend so much time on syntax. Tough problems that required higher level problem solving didn't come until the latter third of the course.
3. I really don't see the purpose of encouraging us to code in Seashell. I just think it makes a lot more sense to have us learn to code in an environment that we're more likely to see in our careers.
- Add self-checks and stepper like CS 135 because it was sometimes hard to understand the algorithms, and they also provided extra practice to get me thinking. Dave never uploaded his slides to the site annoyed me because I couldn't go over his examples. Assignment questions had errors in them, so read the questions before giving them to us. What was the point of having an assignment days before our midterm, and then no assignment the week of the midterm. That seems really poorly thought out and made studying for the midterm harder.
- Be funnier
- Change the grading scheme since many questions were worth 30+ marks so not being able to complete one part of the question could bring your grade down substantially which doesn't accurately represent the knowledge/ability of the student(s).
- I don't know if tutorials were mandatory. Improve communication with regards to that.
- I would suggest that there is greater reference to the assignment questions in the lessons.While both covered the same topics, it often felt that the focus/challenge of the assignments were not necessarily reflective on one's understanding of course content.
- More bonus questions would be nice. As the course is so popular, I think there should be more opportunities for students to stand out.
- More options for aid. The only option is online office hours that have a ridiculous long wait time. For example, I have queued into the office hours under 10 minutes after it begins and I don't get a call for another hour and a half.
- None
- None, it's a very interesting course. I just had trouble keeping up with assignments because I did not manage my time well
- Pacing is extremely fast, assignments are very challenging. Any way to reign it back? (I do know that is this course's whole "thing" though)
- Please have more people available for office hours, it seems like one needs to wait at least an hour before they can be helped.
- Should provide us with more prsc problems to stufy for final or midterm
- Slightly reduce the workload, and cares more about students who fail to keep up the path.