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: 20 / 59 (34%)
The instructor(s) helped me to understand the course concepts. |
Strongly Disagree | Disagree | Neutral | Agree | Strongly Agree | No Basis for Rating |
1 | 1 | | 6 | 12 | |
5% | 5% | | 30% | 60% | |
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 | 1 | 6 | 11 | |
5% | 5% | 5% | 30% | 55% | |
The instructor(s) stimulated my interest in this course. |
Strongly Disagree | Disagree | Neutral | Agree | Strongly Agree | No Basis for Rating |
1 | | 3 | 7 | 9 | |
5% | | 15% | 35% | 45% | |
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 |
| 2 | 2 | 7 | 8 | 1 |
| 10% | 10% | 35% | 40% | 5% |
The course activities prepared me for the graded work. |
Strongly Disagree | Disagree | Neutral | Agree | Strongly Agree | No Basis for Rating |
2 | 3 | 4 | 6 | 5 | |
10% | 15% | 20% | 30% | 25% | |
The intended learning outcomes were assessed through my graded work. |
Strongly Disagree | Disagree | Neutral | Agree | Strongly Agree | No Basis for Rating |
2 | | 2 | 7 | 9 | |
10% | | 10% | 35% | 45% | |
The course workload demands were... |
Very Low | Low | Average | High | Very High | No Basis for Rating |
| | 5 | 8 | 7 | |
| | 25% | 40% | 35% | |
The instructor(s) stimulated my interest in this course. |
- [Strongly Agree] The difference between programming in Python and in C is like the difference in flying on a private jet or a hang-glider. Sure, in a private plane, you don't get to control when you turn left or right, and what altitude you fly at, but it's a comfortable journey with nice seats, air-conditioning, and soundproofing. Coming from a Python background, CS136 is like Dave giving you a hang-glider and asking, "Aren't you so excited to be flying all by yourself?" Like no, I wanted to put my feet up, have a glass of champagne, and relax until I reach my destination, not have to actively avoid birds (memory leaks) or always be checking if I'm gonna crash into the side of a mountain (AddressSanitizer: Heap Buffer Overflow).
The course workload demands were... |
- [Very High] I have not slept before 5 am on Thursday nights in a very long time.
- [Very High] the workload was extremely unreasonable
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: |
- assert(malloc(sizeof(my_little_brain)) == 0)
- C
- C
- C language
- C, pointers, ADTs, so many concepts I can't even name them!
- CS TAs and Professors think you're stupid. Seeing their responses to other students' questions are why I did not feel comfortable asking questions.
- Everything that I learned in this course felt important, especially since I'm interested in C/C++ development. If I had to pick one it'd probably be dynamic memory.
- How much of a waste of time going to the lecture is.
- How to allocate heap memory in c
- how to design and implement modules
- How to write ADT as demands from clients. How to write effective codes with elementary algorithms and data structures.
- Need to start assignments early
- Python better (Yes, I know it's written in C, but my point still stands).
- sketching out code and staying organized before writing.
- The memory model and how to allocate heap memory.
- Understanding how C works, and developing a strong mental model at a lower level. Amazing analogies were used to solidify those concepts, like the heap and pointers
What helped me to learn in this course was: |
- assignment
- Assignments were sometimes challenging and had me thinking about the concept. Furthermore, to finish assignments, it was essential to understand course materials properly.
- Concept checks, in class exercises, and assignments
- EdX lessons
- Edx system.
- Going through the examples and drawing pictures of what I wanted the program to do.
- Google (some concepts are not discussed thoroughly in moduels, for example concept check questions)
- lectures,
- Making notes on concept checks, thinking in-class exercises through. These two things helped smoothen the assignment process.
- Not the website......, I hate the website check, death or go to heaven, two shots are not enough!
- TAs and youtube videos
- The assignments
- The class exercises, and the mini lectures
- the edx environment with the concept checks
- The lectures helped so much more than the readings. Dave is a fantastic teacher and makes everything more clear. Using the boxes, instant noodles, and bricks made everything so much more clearer and gave me a better understanding of the mental model of the thing.
- The mini-lectures given in class were great for adding detail to the readings, and they felt very engaging and informative. Assignments were also well designed for the most part.
- Youtube and Google
What changes, if any, would I suggest for this course? |
- Do not make it online. We learn a lot of new contents, and the module way of learning just isn't suitable for beginner coders.
- Don't use marmoset. Or fix the server issues.
- Exams should not be written on paper. This is something we would never have to do in the field. Timed, sure, but we should be able to error test using a computer.
- Having coding practice integrated into the lessons as concept checks as like on CS115 or 116 I believe.
- I am personally not a big fan of the asynchronous edX learning. I would prefer lectures in person and exercises to be done asynchronously.
- I liked the half-and-half design for classes where the first half was a mini-lecture and the second half was dedicated to class exercises. For the longer, more intensive modules, I think more lecture time could be better.
- I prefer having someone to teach me rather than learn all of the concept myself. I would like to have more class.
- I would make the CS136 session much longer or maybe make 2 CS136 lectures. I honestly do not feel that EdX is that great for teaching students. It is too formal and has its limits. I would be better with more videos and the videos are more engaging. While I understand that the current videos are made to be clear, they feel like the reader is held at gunpoint or an AI. I would much prefer a more engaging read and explanation of the material. I don't think student mind have a "unprofessional" lecture.
- more time for exercise questions
- Please give lectures and teach the content. Do not assume that students will learn it.
- The edx environment was suboptimal at best, please have a search bar that as accessible everywhere and not only on the main course page so people can find course content easier.
- The first one is the server. A lot of students have trouble in terms of accessing the school server. Please, fix this problem for future cs students. Also, I want to have more time to solve class exercises. Sometimes it helps us understand the course materials more effectively.
- The wordload is high, which takes me at least 3 days reading comcepts and working on the assignment. And we only have one course a week, which put a lot of pressure onto the students.
- The workload was extremely unreasonable as if they thought that you only have one course for the term; The office hours were not helpful and neither were the lectures. Additionally many assignments built on questions from the previous assignment which was unfair as we had no way of knowing whether we got that question right or not as there was no grade breakdown. At least in CS 135 we could see that q1a or q2b were wrong and there was feedback; here we only know what mark we got on the assignment as a whole. I
- There is way too much self study I am so confused all the time. Some assignments are way too long and time consuming.
I am hoping for more comments on code segments in the modules (can we also get shorter modules because my attention span is just not keeping up with the monotone words on the modules. There is no highlighting whatsoever and the sections are split very poorly, making a huge textwall which quickly reduces my attention span.
Also, can we get more server/faster server?
- Traditional lectures! As a visual + auditory learner, I prefer when I could see words on presentation slides while hearing a voice explaining them. Only reading the modules was painful
- Try to avoid basing assignment questions on previous assignment questions in case students have not completed the previous assignments. Try to create something similar to the Drracket stepper for programs to allow us to view the steps a program takes vs. what we think it takes.
- you are good but cs136 sucks, less hard for test plz.....omg