On this page, you will find a list of check-off questions for each lab.
Lab 1Welcome to Snap!
View Lab 1
No checkoff needed for Lab 1!
Lab 2Build Your Own Blocks
View Lab 2
Show your Field of Flowers.
Why should you Build Your Own Blocks? Give a reason that someone may create a custom block.
What are some different ways to achieve repetition? Name at least 2.
Show your random-walk sprite.
Show your “draw square-leaved flower…” block.
Lab 3Conditionals, Reporters & Testing
View Lab 3
What is a Boolean? Explain why we use them, and give examples of functions that report a Boolean value.
Show us your traffic signal and letter grade blocks.
Explain the difference between a command and a reporter block.
Show us the
is _ between _ and _ ?block.
What does the mystery reporter (at the bottom of the “Reporter Blocks” page) report when run with the inputs hello and 5?
Name a few of the input types. Why is it important that we specify input types?
How are global variables different from script variables?
Show and explain your sum of two smallest block.
Lab 4Lists and HOFs
View Lab 4
What is a list? Why would we use a list of 10 elements instead of just making 10 variables?
Show us your
Show us your
What is the difference between the
for each (item)loop and the
for (i)loop we have used in previous labs?
View Lab 5
What is an algorithm? Please give an example both in real life and from class.
Please show both your “findNumberInUnsortedList” and “findNumberInSortedList” functions and describe the difference in the algorithms used.
Are algorithms which are (on average) faster always “better”? Why or why not?
What might some “trade-offs” to different computer science algorithms be?
How can abstraction and algorithms relate in computer science?
Lab 6Algorithmic Complexity
View Lab 6
Please show me your Non-Gauss and Gauss Add all numbers in. Which was faster? Why?
Of all the runtimes you have discovered thus far, can you rank them from “fastest” to “slowest”? Why is runtime important for the programs that we create?
Name the logarithmic time algorithm that we implemented in Lab 5. Explain why this algorithm runs in logarithmic time.
What is the difference between “Worst-Case” and “Best Case” Runtimes when running the Are the numbers of (LIST) distinct block? Why?
What happened with the time it took for your computer to counter up the numbers between 1 and x when you started doubling the numbers? Tripling the numbers? What do you think would happen with the time I multiplied your top number by 8?
What is an example of an algorithm that we have seen that has an exponential runtime?
Lab 7Testing + Project 1
View Lab 7
How does the test block work? What is its domain and range?
Show us the output of your test block on the merge column. Explain why this output makes sense.
How will writing tests help you for the 2048 assignment?
How do merge up and merge column work? What is the domain/range of each block?
What is the domain and range of the update display block?
Lab 8Boards (Optional)
View Lab 8
Why did we have variables like “Size”, “Start”, and “Display Width” when designing our board and what do they do?
Show your working board game by moving the sprite around the board.
Explain an advantage of using an underlying board structure when designing a game.
Lab 9Trees and Fractals
View Lab 9
Why is it important that the inputs to a recursive call be smaller than the original inputs to the function?
Please show me your “crazy-tree” block.
Why is it important that the sprite face the same direction at the end of a recursive function as it faced initially?
What defines a recursive block? What are the two necessary “cases” that a recursive block must consider? Name and define them.
Please show me your “snowflake” block.
Lab 10Recursive Reporters
View Lab 10
Why do we map the first item of the set in front of a recursive call of subsets over the rest of the list?
Explain why the second version of subsets only makes 7 calls instead of 64.
Explain how the sort block works, how the merge block works, and how they work together.
Show us the recursive numbers block.
Show us the recursive ends-e block.
Lab 11HOFS and Functions as Data
View Lab 11
What is a higher-order function?
Show us your pandigital block and explain how it works.
Show us your factorion block and explain how it works.
Show us your list all factorions function. How does this compare to the list all pandigital numbers function?
Lab 12Welcome to Python
View Lab 12
What is the difference between the “python”, “python file.py”, and “python -i file.py” terminal commands?
What is the difference between the “print” and “return” python commands?
Show your “reverse_string(string)” function. If you did it iteratively, explain the recursive solution. If you did it recursively, explain the iterative solution.
Show your “palindrome(string)” function.
Show your c-curve function and its output.
Lab 13Data Structures in Python
View Lab 13
What is the difference between = and == in python?
Show us the result of running the autograder.
What is a dictionary?
What does 0-indexing mean?
Lab 14Object-Oriented Programming
View Lab 14
Describe the purpose of an “init” function.
To access a class attribute, should you use the class name or an instance name?
Name two different ways to assign instance attributes.
Show us your “outdated” and “add_genre” methods.
Show us your completed MemePage and Member classes.
Lab 15Text Processing in Python
View Lab 15
What are the arguments of the “open” function and what does it return?
Show us your “izzle” function.
How do we choose how something is sorted when using the “sorted” function in Python?
Show us your “top_n_words” and “print_top_n_words” functions.
Show us your “apply_language_game” function.
Lab 16Data Science
View Lab 16
What are some important commands that you can use to keep only certain rows in a table?
Describe the three main steps of working with data as per this lab.
What commands did you use to find the price of the most expensive listing in San Francisco?
Show us your scatter plot.What are some things you notice from this plot?
View Lab 17
What is a race condition?
Is it always true that splitting a task among 10 “workers” is better than splitting it among 5 “workers”?
What is the difference between determinism and nondeterminism, in the context of concurrency?
How does Snap! handle concurrency?