cs10 / bjc-r

The Beauty and Joy of Computing public resource repository.
https://beautyjoy.github.io/bjc-r
30 stars 101 forks source link

14. Practice with HOFs and Functions as Data (LA Review - Sp15) #526

Open lmock opened 9 years ago

lmock commented 9 years ago
Your Name:

Overview of Lab Comments: i.e. Was this lab good or bad? Too fast? Too Slow? Does it need something new?

--- For each specific Issue (Copy this section as many times as necessary) ---
- [ ] Page Link:
      Type of Issue: i.e. (code) bug, grammar, typo, lack of clarity, etc
      Severity: i.e. "prevents students from continuing", "minor inconvenience", etc
      Comments: Description of the problem, what can be done to fix it, etc.
- [ ] Page Link:
      Type of Issue: i.e. (code) bug, grammar, typo, lack of clarity, etc
      Severity: i.e. "prevents students from continuing", "minor inconvenience", etc
      Comments: Description of the problem, what can be done to fix it, etc.
Justin-Kim72 commented 9 years ago

Name: Justin Kim Overview of the Lab comments: I really like this lab, because I remember that this took me a while, but it helped to further my knowledge of the HOF Functions. The exercises were explained well and it seemed like that many of the students with the explanation will be able to understand what exercises are supposed to accomplish. I feel like that the warm up problems should be done recursively considering it would be good practice for the students. Other than that, the lab looks ready to be tackled by some diligent students.

Page Link: http://inst.eecs.berkeley.edu/~cs10/labs/cur/programming/HOFs/functions-as-data/using-call-and-run.html?topic=berkeley_bjc%2Fhofs%2Fhofs-practice.topic&course=cs10_sp15.html&noassignment&noreading&novideo

Type of Issue: Explanation Severity: Minor Comments: I feel like that the explanation for the ringified was not said very clearly. I remember that if not in this lab, but maybe another lab, that I had to ask a TA about the ringified and how to approach the problem, and he had to help me with some serious debugging. I think it's important to highlight the ringified idea and what it exactly will do to a predicate, reporter, or command.

anushasyed commented 9 years ago

Anusha Syed

I think this lab is a great overview on how HOFs can be used for so many different things. I think all the exercises are explained really well and all the diagrams are also extremely helpful. Each exercise is interesting and challenging, so overall this lab is great!

Page Link: http://inst.eecs.berkeley.edu/~cs10/labs/cur/programming/HOFs/functions-as-data/hofs-practice-warmup.html?topic=berkeley_bjc%2Fhofs%2Fhofs-practice.topic&course=cs10_sp15.html&novideo&noreading&noassignment Type of Issue: directions Severity: minor Comments: For these first exercises, it should be stressed that they be done recursively, as they are very difficult to do with HOFs and since the entire lab is about HOFs, it might be confusing if not specified that these exclusively should be done using recursion instead.

18epedersen commented 9 years ago

Emily Pedersen

I think this lab does a great job of preparing students for the In-lab snap final. I especially found building the blocks for is x a factorion and pandigital useful practice. However, I felt that the Call and Run page was a bit random. I like how the concept was introduced, but in the rest of the course we never really use the call or run blocks.

Page link: http://inst.eecs.berkeley.edu/~cs10/labs/cur/programming/HOFs/functions-as-data/using-call-and-run.html?topic=berkeley_bjc%2Fhofs%2Fhofs-practice.topic&novideo&noreading&noassingment&course=cs10_sp15.html Type of Issue: lack of clarity Severity: minor Comments: This page felt a bit underdeveloped and not fully explained. From my memory last semester, we never revisited the call and run blocks. I think we should either cut this page or provide more hands-on examples for students to experiment with.

amy97 commented 9 years ago

Your Name: Amy Vatcha

Overview of Lab Comments: In my opinion, this is one of the most useful labs in CS10 as it has the student make plenty of blocks right after learning a specific concept. This direct application of theory helps students grasp concepts better without overwhelming the students with a lot of tasks at the end of lab.

juliaalcaraz commented 9 years ago

Your Name: Julia Alcaraz

Overview of Lab Comments: I found this lab to be very helpful, when I first did this lab I remember it helped clarify my thoughts on Higher Order Functions and I was able to understand them better. The lab really clarifies the purpose of Higher Order Functions and provides essential practice.

eurieoh commented 9 years ago

Your Name: Eurie Oh

Overview of Lab Comments: This lab was simple and had clear examples that allowed students to understand the point of the call, run, and compose blocks. Personally, I found it very helpful in understanding HOF's beyond just map, keep, and combine. I thought the the tree example and the "is pandigital" and "is a factorion" example were really useful in showing the motivation behind using HOF's.

meghnac commented 9 years ago

Your Name: Meghna Chatterjee

Overview of Lab Comments: This lab is extremely helpful in solidifying understanding of HOFs and learning of ways to use them besides map, keep, and combine. I think perhaps having this lab before the internet lab might make more sense, as it is the last Snap! related lab. It is a bit distracting with the Internet lab and then Scratch and then another shift to Python.

tcabs17 commented 9 years ago

Tori Cabot

I enjoyed this lab when I took the class. The warm up should be pretty straight forward and is definitely helpful for breaking down harder problems further on in the lab. In general, the explanations are concise and helpful. It seems to be one of the shorter labs as far as length but the concepts will definitely be challenging.

Meghna15 commented 9 years ago

Your Name: Meghna Dasgupta

Overview of Lab Comments: I think this is a heavy Lab which makes it tough for students to finish it in two hours. It offers a complete review of HOFs which is helpful for students but introduces them to new concepts like call, run and compose as well as a result of which it covers a lot of material in a short span of time.

keehansullivan commented 9 years ago

Your Name: Sean Sullivan

Overview of the Lab Comments: Overall it was a good lab, it should definitely be noted that it can be tricky to some students, and is not necessarily a huge topic on tests but students should be familiar with the subject. Lab should easily be done in 2 hours if you ask me, but to get familiar and comfortable with the new tools, students might need extra time.

sayabe commented 9 years ago

Your Name: Satoko Ayabe

Overview of Lab Comments: I think this lab is very good for introducing HOFs to students. Making the students make the list of factorions, and the list of pandigitals, and making them define a HOF is really effective in my opinion. I also saw that this semester, there's a page dedicated to how the grey ring works (http://inst.eecs.berkeley.edu/~cs10/labs/cur/programming/HOFs/functions-as-data/using-call-and-run.html?topic=berkeley_bjc%2Fhofs%2Fhofs-practice.topic&novideo&noreading&noassingment&course=cs10_sp15.html). I don't think this was there last year (?), and I thought this really helps later on in the lab when students have to test out their minimum and compose blocks

jessej-luo commented 9 years ago

Your Name: Jesse Luo

Overview of Lab Comments: I think this does a good job of helping understand how functions can be used as data and also object oriented programming by showing how you can simplify things into classes so that they can be reused. I think this helps with abstraction and a general approach of learning how to simplify things. One part that confused me last year was the ringification part, I think there could be more about that. I felt that by the end it's understandable but at first it can be a bit intimidating and could possibly turn off people from going through the lab carefully.

danielduazo commented 9 years ago

Your Name: Daniel Duazo

Overview of Lab Comments: This lab does a really good job explaining how higher order functions work. It can get confusing for some since it is a lot of information to digest, but with practice, assistance, and further explanation, I think all the students should be able to understand this lab. The warmup at the beginning of the lab is also a good benchmark to make sure the students are up to level (as if they can't solve the blocks, they should speak with a TA after class). In terms of length, I think it is an appropriate pace for a 2 hour lab. I feel like many students will have questions for the lab assistants during this lab because it involves a lot of conceptual thinking to understand what's going on.

yifatamir commented 9 years ago

Yifat Amir

Overview of Lab Comments: I think this lab is very fun and even empowering! I think it walks the student through the steps thoroughly and in proper sequence. Not too much constructive feedback to give, honestly.

lizapraprotnik commented 9 years ago

Your Name: Liza Praprotnik

Overview of Lab Comments: I think this lab is a great way of combining much of what students have learned in lab so far. The warmup section is a good review and introduction to the lab. The explanations on how to use higher-order functions in Snap are also clear and easy to understand. However, the practice problems are pretty challenging and so the lab overall might be a little too long to finish in lab.

mayaah commented 9 years ago

Your Name: Maya Angelica Hernandez

Overview of Lab Comments: One of my favorite labs taking CS10 and still enjoyable to do today. Excellent preparation for the in lab final. The call and run stuff is pretty strange at first, after taking more CS classes it's intentions are clearer so I'm not sure if the explanations for these are clear because I know more now or because they are written clearly. I do remember being intimidated by them when first taking the class though. Also, good to warn students that it may take a while for their functions such as is pandigital to run and to wait patiently for it to finish running.

--- For each specific Issue (Copy this section as many times as necessary) ---

KamikazeTomato commented 9 years ago

Your Name:

Overview of Lab Comments:

I liked this lab in general. I think an interesting task to add to the lab would be for students to recreate the HOF's they are already familiar with such as "keep", "map", and "combine". Using the new information on how to create their own HOF's blocks with HOF's they already intuitively understand the function of could go a long way towards aiding comprehension.

--- For each specific Issue (Copy this section as many times as necessary) ---

      Severity: Possible hurdle

      Comments: This is the only part of the lab in which there is an example where students can see the "HOF" part of the function as a variable inside the function itself. It is a little confusing as it lacks the grey border that is visible on the outside which is aesthetically confusing. I think the other examples could also benefit from giving some skeleton code where the HOF portion of the code is represented this way, as I personally had to go back to this page to remember what the HOF variables actually look like inside the HOF blocks themselves.

mfujimoto commented 9 years ago

Your Name: Mason Fujimoto

Overview of Lab Comments: I thought this was a good lab even though it is difficult. Using functions as data introduces lots of new syntax and new ways of thinking. I felt as though the difficulty comes in trying to think of new ways to solve problems (e.g. no recursion or loops). Hopefully this is something that is talked about in lecture and discussion section as it can be difficult to work through on your own (though not impossible). I think that if this lab proves to be excessively long, the minimize exercise could be removed.

--- For each specific Issue (Copy this section as many times as necessary) ---

jesseearlin commented 9 years ago

Jesse Moore

Overview of Lab Comments: Very helpful lab for students using CS10 as a gateway into other programming classes. I recognized a lot of very important concepts that will be covered in-depth in CS61a. While I personally have no problem with the heavy emphasis on math in this lab, I fear that some students may intimidated by it and fail to complete the lab punctually and without an excess of stress. Furthermore, certain blocks were introduced in this lab that were not really explained in depth like the gray ring.

http://inst.eecs.berkeley.edu/~cs10/labs/cur/programming/HOFs/functions-as-data/using-call-and-run.html?topic=berkeley_bjc%2Fhofs%2Fhofs-practice.topic&novideo&noreading&noassingment&course=cs10_sp15.html type of issue: lack of clarity severity: minor comments: For the execution of the call block, I think that it would be helpful to clarify the importance of the order in which values are entered into the block. For a function that is not commutative, this could lead to some problems. While the example implies that it is simply entered from left to right, it should be explicitly stated.

http://inst.eecs.berkeley.edu/~cs10/labs/cur/programming/HOFs/functions-as-data/minimize-function.html?topic=berkeley_bjc%2Fhofs%2Fhofs-practice.topic&novideo&noreading&noassingment&course=cs10_sp15.html type of issue: lack of clarity issue: tricky math comments: Having taken classes on numerical analysis, finding the minimum of a function can be very difficult analytically and I think that a hint should be given on how to start the process. For me at least, my mind when immediately to loops for the solution instead of HOFS. Perhaps a hint that will help them think about the solution using HOFS.

ArielleSpencer commented 9 years ago

Arielle Spencer

Overview: This lab is helpful but hard, especially conceptually difficult! Great preparation for later classes and good relating the concepts to other uses (i.e. calculus and engineering). There's a lot to do, it took me a while, but overall should be good.

Specific problems: Multiple pages lack of clarity The grey ring is used without being well explained and I know it gave me a ton of problems when I did this lab as a student.

http://inst.eecs.berkeley.edu/~cs10/labs/cur/programming/HOFs/functions-as-data/using-call-and-run.html?topic=berkeley_bjc%2Fhofs%2Fhofs-practice.topic&novideo&noreading&noassingment&course=cs10_sp15.html lack of clarity The call and run blocks are explained but it's hard to transfer that into how and when to use them.

multiple pages difficulty may of the blocks students are asked to make are conceptually very hard and it might be helpful and less intimidating if there was a little more explanation or hints about how to think of the problem or how to start, particularly because this is a pretty math intensive lab and those students not comfortable with higher math might be discouraged by that.

Omarb62 commented 9 years ago

Your Name: Omar Buenrostro

Overview of Lab Comments: This lab does a great job at introducing the concept of using functions as data. Although considering functions as data is a new and definitely tricky thought for some people, the power HOF's create with abstraction is an invaluable new idea with many possible applications. Forcing students to solve problems with HOF's instead of recursion or iteration is difficult, but rewarding when one realizes how much less lines of code you wrote if you had rather used recursion or loops. The call and run blocks were definitely confusing and the concept of ringifying and unringifiying functions went right over my head several times, so a better explanation placing a reminder about the grey ring on the last page of the lab might be useful. Overall, this lab feels like it ran at a good pace.

jesslarson commented 9 years ago

Your Name: Jessica Larson

Overview of Lab Comments: This lab was fine, not one of my favorites, as I think HOFs unnecessarily complicate things.

--- For each specific Issue (Copy this section as many times as necessary) ---

rwason commented 9 years ago

Your Name: Rishabh Wason

Overview of Lab Comments: I feel like this lab is an effective lab but it has a lot of information for the students to absorb. It teaches the material well but I think that the information is very dense and could possibly be broken down.

Page Link: http://inst.eecs.berkeley.edu/~cs10/labs/cur/programming/HOFs/functions-as-data/functions-as-data.html?topic=berkeley_bjc%2Fhofs%2Fhofs-practice.topic&novideo&noreading&noassingment&course=cs10_sp15.html Type: clarity Severity: minor Comments: When I first personally learned about the grey border as ringify it was very confusing. I feel like the text could be worded better for clarity.

migugalde commented 9 years ago

Your name: Miguel Ugalde

Overview of Lab Comments: I particularly enjoyed this lab. I think the most pleasant labs are the ones that have a lot of pictures of the codes, step by step. I noticed with this lab, more so than others, makes an effort to very slowly move from one example to another. This is an important concept for the next cs class and something they just jump right into. One that maybe is a concern is the amount of math in this lab but that is something that each individual student can get further help with since some people are at different points.

carolinekim commented 9 years ago

Caroline Kim

Overview of Lab Comments: The pros of the lab are that there are a lot of practices and visualized explanations of the concepts throughout the lab. As the topic is a little difficult, the lab lists the different steps that the students need to take to solve a bigger problems, but does not give the answers away. It seems nice that there are a lot of opportunities for the students to practice the concepts and learn through experimenting.

--- For each specific Issue (Copy this section as many times as necessary) ---

Hungukaroo commented 9 years ago

Elizabeth Steger

Overview: This is such an important lab for getting students' knowledge of HOFs to really click. I really think the step-by-step instructions for the exercises are nice, as well as the way this lab is separated out in sprites in the starter-file and the comments work well. Although I don't think the lab should be overwhelming, it does sometimes seem like the mass amount of functions to fill out confuses students, but at the same time I think with some focus and time this lab is easy to understand.

Page Link: http://inst.eecs.berkeley.edu/~cs10/labs/cur/programming/HOFs/functions-as-data/generalizing-list-all.html?topic=berkeley_bjc%2Fhofs%2Fhofs-practice.topic&novideo&noreading&noassingment&course=cs10_sp15.html Issue: Slightly Confusing Severity: Minor Comments: I think it would be nice to tell the students to head back to the HOFs sprite to find the layout of the blocks being discussed, otherwise they might be confused as to where to go to see these blocks or try to implement the "list all numbers with property: " block from scratch or taking it from the sidebar (which is definitely okay, but not ideal since we have it cleanly put out for them like the rest of the exercises).

Page Link: http://inst.eecs.berkeley.edu/~cs10/labs/cur/programming/HOFs/functions-as-data/minimize-function.html?topic=berkeley_bjc%2Fhofs%2Fhofs-practice.topic&novideo&noreading&noassingment&course=cs10_sp15.html Issue: Another example could be helpful Severity: Minor Comments: I think this task is a little daunting at first because the example given is good for checking functionality but not great at explaining what we want the block to do. I think another simpler example would be really useful (such as just a mod 7 function over 1 - 10 or something).

morganewing commented 9 years ago

Your Name: Morgan Ewing

Overview of Lab Comments: I think this is a very challenging lab but I think it helps the students learn a lot about HOFs, functions as data, and abstraction. I think that most of the blocks will take students a lot of time to code but they should still be manageable with assistance. The information presented on the Functions as Data page may be pretty confusing when first introduced but I think the practice examples and problems make it clearer. The last two pages are the most challenging, in my opinion, and I think there should be more hints on how to build the blocks on these pages.

soham14 commented 9 years ago

Your Name: Soham Kudtarkar

Overview of Lab Comments: I recall this lab being very fun to reason out when I was taking the course! I find the rigorousness of this lab to be slightly less than that of some of the other labs, but I still found this lab to be useful for practice with HOFs. There were some parts of this lab that seemed a bit disjointed in terms of organization, as explained in the issues below. Except for this organizational issue, I found this lab to be effectively instructive and fun to do.

anjli-shah commented 9 years ago

Your Name: Anjli Shah

Overview of Lab Comments: Overall I thought this was a great lab to practice more with HOFs. I really liked how their was a warm-up at the start that encouraged students to try problems in different ways. This was one of my favorite labs when I took CS10 and I think it does a wonderful job about transitioning and introducing Functions As Data.

Page Link: http://bjc.berkeley.edu/bjc-r/cur/programming/HOFs/functions-as-data/using-call-and-run.html?topic=berkeley_bjc%2Fhofs%2Fhofs-practice.topic&course=cs10_sp15.html&novideo&noreading&noassignment      Type of Issue: Lack of clarity        Severity: i.e. Minor Inconvenience        Comments: It may be clearer to tell the student that the list of functions list refers to the list created on the previous page. This way they can go back and check, for example, what item 2 of the list actually is and check their understanding.

Page Link: http://bjc.berkeley.edu/bjc-r/cur/programming/HOFs/functions-as-data/pandigital-numbers.html?topic=berkeley_bjc%2Fhofs%2Fhofs-practice.topic&course=cs10_sp15.html&novideo&noreading&noassignment Type of Issue: Organizational Severity: Minor Inconvenience Comments: It may make more sense to put the pandigital section before the Functions as Data section or put the latter last so that all the normal HOF problems are together. This way when we generalize the list all numbers between block we haven't jumped from one section to another back to the first and then back to the other.

Hungukaroo commented 9 years ago

Additional Comments! Sorry! Elizabeth Steger

Page Link: http://inst.eecs.berkeley.edu/~cs10/labs/cur/programming/HOFs/functions-as-data/factorions.html?topic=berkeley_bjc%2Fhofs%2Fhofs-practice.topic&novideo&noreading&noassingment&course=cs10_sp15.html Issue: Worries students Severity: Minor to Moderate Comments: I noticed today in lab, practically every student was worried about why the list all factorions block 1 to 150 took so long. I earlier thought this might just be a problem on my home computer, but it takes about a full minute or more on the lab computers as well. I think a brief warning that if the block takes a long time it is likely not their fault (or even a suggestion to start smaller to make sure it works (1 to 5 should report [1, 2])) would be very helpful.

cynthiaha commented 9 years ago

Your Name: Cynthia Ha

Overview of Lab Comments: Overall, I think this lab was a bit challenging but definitely helps students in solidifying their understanding of HOFs. Overall, the lab is well structured with clear instructions and useful exercises. The lab also increases in difficulty, which makes sure the lab is well-paced.

Page Link: http://inst.eecs.berkeley.edu/~cs10/labs/cur/programming/HOFs/functions-as-data/using-call-and-run.html?topic=berkeley_bjc%2Fhofs%2Fhofs-practice.topic&novideo&noreading&noassingment&course=cs10_sp15.html Issue: Lack of Clarity Severity: Minor Inconvenience Comments: I think the difference between run and call could be explained in a clearer way. I remember when I did this lab, I was a bit confused by the two and wasn't sure when to use which. Maybe put more examples or put a more elaborate exercise to make sure students grasp a clear understanding of the two.

michen-ml commented 9 years ago

Your Name: Michelle Chen

Overview of Lab Comments: I thought that this lab introduced a lot of important concepts that will be helpful later on in future CS classes, so I thought the exercises were extremely helpful. Lab is well-paced with a good balance of instruction and exercises.

william0cheung commented 9 years ago

William Cheung

Overview: Solid lab with doable warmup questions. Factorion might be a bit challenging, so it may be discouraging at first. Maybe add that they can attempt these problems in any order they'd like. Not sure if call and ringify was part of a lecture, but it may be completely new concepts in the middle of a HOF lab. Otherwise, I love the practice they get with HOFs! Also, the abstraction and generalizing "list all" is such a great tool that students will appreciate.

Link: http://inst.eecs.berkeley.edu/~cs10/labs/cur/programming/HOFs/functions-as-data/hofs-practice-introduction-and-warmup.html?topic=berkeley_bjc%2Fhofs%2Fhofs-practice.topic&novideo&noreading&noassingment&course=cs10_sp15.html Type: Clarity Severity: Minor Comments: For the warmups, the report might be ambiguous, in that it should return a list, but it doesn't show up exactly as what the lab says; instead the answer is a box. Shouldn't really be an issue, but just for clarification.

Link: http://inst.eecs.berkeley.edu/~cs10/labs/cur/programming/HOFs/functions-as-data/using-call-and-run.html?topic=berkeley_bjc%2Fhofs%2Fhofs-practice.topic&novideo&noreading&noassingment&course=cs10_sp15.html Type: Ordering Severity: minor Comments: Might be a new concept for calling and running in the middle of HOFs, though it is a powerful tool, students might not see the practicality of these blocks.

JiazhenChen commented 9 years ago

Your Name: Jiazhen Chen

Overview of Lab Comments: This is a pretty good lab that talks explicitly about HOFs. I like it very much. It gives vivid examples and descriptions that help to understand the abstraction of the general functions. The overall pace is good. There's one minor thing that I think can be clarified. There are seperate sprites that had already been set up for different part of the labs. Some are mentioned but some are not. So it may be a bit confusing.

--- For each specific Issue (Copy this section as many times as necessary) ---

Laralinmcc commented 9 years ago

Lara Mcconnaughey

Overview of Lab Comments: This starter file of this lab is a bit confusing there are extra thing in the starter file that lab doesn't use. Also I think the examples that show listed functions are great because it shows how functions can be stored as data just like numbers. I think somewhere in this lab it should ask students to open one of the HOF blocks to see what is going on in the code and that the HOF block is actually using functions as data.

--- For each specific Issue (Copy this section as many times as necessary) ---

Rshahatit commented 9 years ago

Your Name: Rami Shahatit

Overview of Lab Comments: Despite the difficulty of this lab i found ti very fun having to deeply think critically to solve these complex problems. I think that is what cs is all about problem solving and i think this lab did it the best. I remember having to help students a lot with the pandigital problem in this lab. even though that wasn't the assigned lab for the day so i think a lot of students were stuck on that problem.

--- For each specific Issue ---

siyingwang commented 9 years ago

Your Name: Siying Wang

Overview of Lab Comments:This is a good lab as it shows many diagrams and good examples of HOFs, which combines many helper functions inside. And because this is an important part in CS 10, I would like to suggest go over some main functions in discussion or labs.

--- For each specific Issue (Copy this section as many times as necessary) ---

benlsmith commented 9 years ago

Your Name: Benjamin Smith

Overview of Lab Comments: This lab was great for working with HOFS and definitely was important for tying together many ideas of CS10 and building upon students knowledge. The beginning was a good introduction into tying together past ideas, which helps lead into HOFS. I Think that this was a good pace for taking the whole 2 hours of lab time however most students in my monday lab were still working on this one so cutting one of the no- essential exercises may help with their problems with catching up on labs.

parsaattari commented 9 years ago

Your Name: Parsa Attari Overview of Lab Comments: I remember this lab was one of the hardest and most important labs that I did when I took CS10. This lab has a lot of material and tests people on how well they really understand higher order functions. Many people asked for help on this lab and took a really long time to finish. I would suggest that maybe break this lab up to two sections or give the students more time than other labs, because many, I noticed, were rushing through it and ended up not understanding all that was supposed to be done. One difference I noticed between this lab and the one from last semester was that this lab was cut shorter by a little bit, but I believe there is more room for shortening. Although I don't agree with having a lot of text on the page, I think there were parts of this lab that could definitely use more clarification.