Several students fell below the passing cutoff on the midterm, despite their (and often my) expectations that they would have passed. This optional assignment allows those who did poorly on the midterm to raise their midterm grade to the passing bar. Specifically: if you got below 45 on the midterm and want to try to raise your midterm grade to a 45, you may turn in the following set of problems. This will take the pressure off of you having to rely on the final to pass the course.
Some policies:
This is entirely optional. You can still pass the course without doing this option if your project and final exam grades are strong enough. It is up to you to decide whether or not this is worth your time.
This option is only available to students who got below 45 on the midterm. It cannot be used to raise grades in other cases.
All work on these problems must be entirely your own. You may not get help from others, including the course staff (beyond the small clarifications that you might ask on an exam -- send such questions to Kathi only).
You may take as much time as you want to do these, and you may use a computer. You may also refer to your notes, as you would while doing a homework.
Your grade offset will be determined by the correctness of your answers. Your midterm grade does not get raised simply because you turn these problems in. You will need to get these close to fully correct to offset your midterm grade.
A company maintains several pieces of information about its employees: their name, hourly salary, the names of projects they work on (could be several, like database, web, service), and which (other) employees they supervise. A person may work on different projects than his or her boss.
Develop a data definition and one example of data for company employee hierarchies with at least 4 employees. The hierarchy should start with a single person (the boss).
Write a function raise-by-project that consumes a
project name, number (percentage), and employee hierarchy and produces
an employee hierarchy in which every person on the named project gets
a raise of the given percentage.
Write a function on-project that consumes the name
of a project and an employee hierarchy and produces a list of names of
people who work on the named project.
Write a program emptree-filter that consumes an
employee hierarchy and a function from employees to boolean and
produces a list of employees for whom the given function returns
true.
Show how to rewrite on-project using
emptree-filter and map.
Turn in a single file makeup.ss (or makeup.scm) containing all code and documentation for this assignment.
Refer to the Homework Expectations when preparing your solutions.
You may not collaborate on this with anyone else. Your work must be entirely your own.