Last updated on
Callback: Unguided callback
The aim of this callback is to develop your independence and project-planning skills and to prepare you for the unguided lab. In this callback, you will:
- Think of a modification or improvement you’d like to make to a previous lab.
- Write a specification describing the planned change:
- 2 or 3 sentences explaining what feature you plan to implement.
- 1 sentence explaining which course concepts you plan to use or illustrate.
- 1 sentence explaining the distribution of tasks among team members (all team members are expected to contribute equal effort to the final result).
- Implement the change.
- Receive a “checkoff” from a staff member:
- Give a short live demo of your feature.
- Walk the staff member through the code and tests that you wrote or modified, by showing them your Git history.
- Answer a few clarification questions.
Before you start, make sure to read the unguided callback policies in full for details on rules, submission, and grading.
Callback suggestions
Below are some suggestions for inspiration, but we hope most of you will come up with your own ideas! In all cases, make sure that you create adequate tests in addition to implementing the functionality.
We will have on help session dedicated to reviewing proposals. If you want feedback on yours, please come to that session rather than asking on Ed or in other help sessions.
Find
FFP3 (3-4 people)
Extend find with new kinds of filters (this will require modifying the supporting library to expose other properties of files and directories, the command-line interface to expose new flags, and the testing code to mock that data). Think carefully about how to test your new filters!
Baby’s first sentence (3 people)
Generalize the interface of find by allowing combinations of filters, such as -name foo -and -size +200c, -name foo -or -size +200c, or -not -name foo. Do you need a parser to support arbitrary combinations of filters? Or have we already seen an easier way to represent and evaluate complex expressions? (hint).
Boids
Loopy times (3-4 people)
Explore unguided geometries in the boid world: wrap the world on a torus, add wormholes to transport boids across the board, use non-Euclidian distances to compute forces, etc.
Not all the same (3-4 people)
Invent multiple new boids classes and vary their speeds, colors, and behaviors: perhaps some boids escape certain forces; perhaps some boids have more influence on others; perhaps some boids chase other boids; etc.
Road work ahead (3-4 people)
Include obstacles or environmental hazards. They should affect how a boid behaves: either by wanting to avoid them or by affecting their velocity/position. Some hazardous zones such as wind currents could move around the world.
Calculator
Can it cook rice? (3-4 people)
Add a separate type of logical (boolean) expressions to the calculator, with operators like and, or, not, etc. Add a conditional construct (if) to the main type of expressions, using your new type of logical expressions for the condition in the if. (Suitable for 2 people. With more, add additional constructs beyond if, like while or do … while.)
Can it run Doom? (3-4 people)
Add an additional context for functions and add support for calling them. Function calls need to have the correct amount of arguments. Consider and define how should function parameters using existing variable names behave!
Anagrams
Not wet (3 people)
Change the sentence-anagrams enumeration algorithm to produce results unique up to word permutations (that is, different sentences in the output cannot have the same words in different orders). Your algorithm should eliminate permutations as it computes anagrams (and not eliminate them after the fact).
Scalashop
Rose-tinted glasses (3-4 people)
Add one new image filter per team member.
Negative examples
Below you will find some negative examples of what your callback should not be, together with a short explanation why it is not ideal.
Boids feeder
For boids, add the possibility for a user to click on the canvas to make some food appear. Then boids will be attracted towards the food. Once consumed, boids grow larger and their physical inertia increases.
This proposal would require understanding the simulation web interface and extending how it interacts with the server. Unlike the “Road work ahead” proposal, this one requires implementing client-side user interactions. If you have not worked with similar code before, this is too much work for the scope of the callback.
Colorful flock
For boids, assign random colors to individual boids.
This is too little work. If additionally there is a change which requires extending the UI (like generating random shapes), then it would be a balanced callback.
Operating on numbers
For calculator, add new operators (power, modulo, logarithm, etc.) and handle them in the simplifier/evaluator/printer.
These changes are very analogous to the existing features, making this callback too simple. If additionally these new operators are supported in the parser, then it would be a balanced callback.