Write a book review of Eric Foner’s A Short History of Reconstruction
Write a four page paper about the book where you will
Give a one page summary of the book
Explain the methodology and sources of the book
Critique the book with an online book review from another historian or historical
journal Critique the book with your own opinion (not using first person)
The paper must be in Chicago style format
“,Write a book review of Eric Foner’s A Short History of Reconstruction

write a letter dated for our last class day, December 9th, describing in detail

write a letter dated for our last class day, December 9th, describing in detail “the story of what has happened to you” throughout the semester. In this letter, you are to write in the past tense, as if you are looking back on your transformation this semester, and state what grade you earned, report on all the insights you acquired, the milestones you attained, the risks you took, and the transformation that has occurred in your identity as a professional student and fellow leader to your classmates.

which includes:

Learning Goal: I’m working on a health & medical discussion question and need an explanation and answer to help me learn.
I attached a discussion question by another student. Please reply with a minimum of 75 and more words and one scholarly reference.
I also attached the reply example and how we can add question at the end per instructor announcement .
No need for a cover page.
Please
read the following announcement from the professor regarding the
substantive reply post. Requirements for the substantive post:
A
substantive post is something that, generally speaking, is more than an
affirmation or a comment. It adds something new or different to the
conversation.
A good rule of thumb is to practice the \\\”ABC\\\”” method

Learning Goal: I’m working on a java multi-part question and need an explanation and answer to help me learn.
Purpose:To go over:Processes
fork() and execl()
Signals
Computing
Please ssh into cdmlsrvprd01.dpu.depaul.edu or use your own Unix machine.
Description
The mother of two children was going yardwork while wearing a decorative pin in her hair. Unfortunately, she lost her pin in a pile of grass. She wants to motivate her children to find the pin: $20 to whomever finds it first!
Sample output:
$ ./mother
Mother: “I will give $20 to whomever finds my decorative pin in the pile of grass. Go!”
Betty 8649: “Mom, have you thought of using a magnet?”
Fred 8650: “It smells nice, but no pin yet.”
Betty 8649: “Mom, have you thought of using a magnet?”
Fred 8650: “It smells nice, but no pin yet.”
Betty 8649: “Ouch! I got pricked by a . . . Hey, look at what I found!”
Mother: “Thank you for finding my pin, here is $20”
Fred 8650: “It smells nice, but no pin yet.”
Betty 8649: “Yay! I win! $20 is all mine!”
Fred 8650: “Mom, have you thought of using a magnet?”
Fred 8650: “Man! Now my hands are itchy.”
$ ./mother
Mother: “I will give $20 to whomever finds my decorative pin in the pile of grass. Go!”
Fred 8659: “Ouch! I got pricked by a . . . Hey, look at what I found!”
Betty 8658: “It’s just grass, not pin yet.”
Mother: “Thank you for finding my pin, here is $20”
Betty 8658: “It smells nice, but no pin yet.”
Betty 8658: “That wasn’t fair! I was just getting started!”
Fred 8659: “Yay! I win! $20 is all mine!”
$ ./mother
Mother: “I will give $20 to whomever finds my decorative pin in the pile of grass. Go!”
Catherine 8668: “Ouch! I got pricked by a . . . Hey, look at what I found!”
Gerald 8669: “It smells nice, but no pin yet.”
Mother: “Thank you for finding my pin, here is $20”
Catherine 8668: “Yay! I win! $20 is all mine!”
Gerald 8669: “Ouch! I got pricked by a . . . Hey, look at what I found!”
Gerald 8669: “Yay! I win! $20 is all mine!”
Mother: “Thank you for finding my pin, here is $20”
$ ./mother
Mother: “I will give $20 to whomever finds my decorative pin in the pile of grass. Go!”
Hal 8688: “Mom, have you thought of using a magnet?”
Dorothy 8687: “Mom, have you thought of using a magnet?”
Dorothy 8687: “It’s just grass, not pin yet.”
Hal 8688: “It smells nice, but no pin yet.”
Dorothy 8687: “It smells nice, but no pin yet.”
Hal 8688: “Ouch! I got pricked by a . . . Hey, look at what I found!”
Mother: “Thank you for finding my pin, here is $20”
Dorothy 8687: “It’s just grass, not pin yet.”
Dorothy 8687: “Man! Now my hands are itchy.”
Hal 8688: “Yay! I win! $20 is all mine!”
Protocol:
There are 2 programs (mother.c and child.c) that run 3 processes (1 mother, 2 children).
mother.c installs a SIGUSR1 signal handler, and fork()s and execl()s both child processes. She then hangs out.
The child processes installs a SIGTERM signal handler, and look for the pin.
When a child finds it, the child sends SIGUSR1 to its parent (the mother process).
When the mother receives SIGUSR1, it sends SIGTERM to all of its children, causing them to stop.
The mother then wait()s for both children, and quits herself.
Mother
|
|fork()/execl() child0
|—————->|
| |
|fork()/execl() | child1
|—————–|———–>|
| | |
| | |
| | |
| | |
| (searching) (searching)
| | |
| | |
| SIGUSR1 | |
|<----------------| | | | | | SIGTERM | | |---------------->| |
| | |
| SIGTERM | |
|—————–|———–>|
| | |
| (stops) (stops)
|
(stops)
Assignment:
mother.cStart with this code:#include
#include
#include
#include
#include
const char* FEMALE_NAME_ARRAY[]
= {“Anna”,
“Betty”,
“Catherine”,
“Dorothy”
};
const char* MALE_NAME_ARRAY[]
= {“Eric”,
“Fred”,
“Gerald”,
“Hal”
};
const int NUM_CHILDREN = 2;You may change the names, but please keep both arrays the same length!
main() should do the following:srand(getpid());
This resets the random number generator so that the program does not behave exactly the same each time.
Install a simple handler to be called when SIGUSR1 is received. What will it do? Keep reading!
printf(“Mother: “I will give $20 to whomever finds my “”

C program. NOT C++
specialcountmulthreads.c is not completed. Need some modification
31 text files named input_00.txt to input_30.txt.
Requirements:
Multiple threads are expected to run in parallel to share the workload, i.e. suppose 3 threads to process 30 files totally, then each thread should process 10 files;
When a thread is created, a message should be print out showing which files this thread will process, for example:
Thread id = 274237184 starts processing files with index from 0 to 10!
When a file is being processed, a message should be print out showing which thread (thread_id = xxx) is processing this file, for example:
Thread id = 265844480 is processing file input_11.txt
When a thread is done with its workload, a message should be print out showing which files this thread has done with work, for example:
Thread id = 274237184 is done !
The array long specialfreq[ ] should always be up-to-date, i.e. it always has the result of all the threads counted so far. [You may need to use mutexes to protect this critical region.]
======specialcountmulthreads.c=====================
#include
#include
#include
#include
#include
#include #define MAX_FILES 30
#define MAX_LEN 1000
int num_threads;
char *filename[MAX_FILES];
int num_files;
long specialfreq[MAX_FILES];
int *index_array[MAX_FILES];
void *thread_function(void *arg) {
int *index = (int *) arg;
int i;
int my_index = *index;
int starting_index = my_index * (num_files / num_threads);
int ending_index = starting_index + (num_files / num_threads);
FILE *fp;
char ch;
int count = 0;
char line[MAX_LEN];
printf(“Thread ID: %lu starts working on files %d to %d.n”, pthread_self(), starting_index, ending_index);
for (i = starting_index; i < ending_index; i++) { fp = fopen(filename[i], "r"); if (fp == NULL) { perror("Error opening file"); } else { printf("Thread ID: %lu is working on file %sn", pthread_self(), filename[i]); while (fgets(line, sizeof (line), fp) != NULL) { ch = fgetc(fp); if (ch == '!') { count++; } } specialfreq[i] = count; fclose(fp); } } printf("Thread ID: %lu is done!n", pthread_self()); pthread_exit(NULL); } void specialcountmulthreads(char *path, char *filetowrite, long specialfreq[], int num_threads) { pthread_t tid; int i; int err; int total_count = 0; if (argc < 3) { printf("Usage: ./a.out num_threads input_file1 input_file2 ... input_file30"); exit(0); } num_threads = atoi(argv[1]); num_files = argc - 2; //printf("Num thread: %dn", num_threads); //printf("Num files: %dn", num_files); for (i = 2; i < argc; i++) { filename[i - 2] = argv[i]; //printf("Argv: %sn", argv[i]); //printf("Filename: %sn", filename[i - 2]); } for (i = 0; i < num_files; i++) { index_array[i] = malloc(sizeof (int)); *index_array[i] = i; //printf("Index array: %dn", *index_array[i]); //printf("Index array: %dn", index_array[i]); } for (i = 0; i < num_threads; i++) { err = pthread_create(&tid, NULL, thread_function, index_array[i]); if (err != 0) { printf("ncan't create thread :[%s]", strerror(err)); } } for (i = 0; i < num_files; i++) { total_count += specialfreq[i]; } printf("Total count: %dn", total_count); return 0; } ======================testmulthreads.c===================================================== #include
#include
#include
#include
#include
#include
#include
#include “count.h”
/*
* Print the frequencies of special words stored in array: specialfreq[] to output screen in the format as:
* letter -> frequency (one letter a line)
* Input: specialfreq – array having the frequency of each special word
size – the total number of special words
* example:
* he -> 250932
* she -> 181764
*/
void displayalphabetfreq(long specialfreq[], int size)
{
for(int i = 0; i < size; i++) { switch (i) { case 0: printf("%s -> %dn”, “he”, specialfreq[i]);
break;
case 1:
printf(“%s -> %dn”, “she”, specialfreq[i]);
break;
case 2:
printf(“%s -> %dn”, “they”, specialfreq[i]);
break;
case 3:
printf(“%s -> %dn”, “him”, specialfreq[i]);
break;
case 4:
printf(“%s -> %dn”, “me”, specialfreq[i]);
break;
defalut:
printf(“%s”, “Wrong number of special words … “);
}
}
}
int main(int argc, char *argv[])
{
printf(“Please enter 2 arguments only eg.”./testmulthreads #_of__threads!!””n””);