Top Banner
1 Exam #131 Page: 1 Name: _____________________________________ 131 CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name: ___________________________________________________ Umail Address: ______________________________@ umail.ucsb.edu Please write your name above AND AT THE TOP OF EVERY PAGE Be sure you turn in every page of this exam. Each exam is numbered (e.g. Exam #137). Each pages is numbered (e.g. Page 1, Page 2, etc.) The last page clearly says "End of Exam". This exam is closed book, closed notes, closed mouth, cell phone off You are permitted one sheet of paper (max size 8.5x11") on which to write notes These sheets will be collected with the exam, and might not be returned Please write your name on your notes sheet
240

CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

Jul 29, 2018

Download

Documents

vuongtuong
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

1Exam #131 Page: 1 Name: _____________________________________

131

CS32—Midterm ExamE01, W15, Phill Conrad, UC Santa BarbaraWednesday, 04/30/2015, 9:30am­10:45am

Name: ___________________________________________________

Umail Address: ______________________________@ umail.ucsb.edu

Please write your name above AND AT THE TOP OF EVERY PAGEBe sure you turn in every page of this exam.

Each exam is numbered (e.g. Exam #137).Each pages is numbered (e.g. Page 1, Page 2, etc.)The last page clearly says "End of Exam".

This exam is closed book, closed notes, closed mouth, cell phone offYou are permitted one sheet of paper (max size 8.5x11") on which to write notesThese sheets will be collected with the exam, and might not be returnedPlease write your name on your notes sheet

Page 2: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

2Exam #131 Page: 2 Name: _____________________________________

131

1. For these questions, assume 8-bit two's complement representation of negative integers. The left-most bit is the signbit, with 1 representing negative numbers, and 0 representing positive numbers.

a. (2 pts) Given the decimal number -96,what is this number's binary representation in 8-bit two's complement?

b. (2 pts) Given the decimal number -17,what is this number's binary representation in 8-bit two's complement?

c. (2 pts) Given the decimal number -48,what is this number's binary representation in 8-bit two's complement?

d. (2 pts) Given that 11011110 is the 8-bit two's complement representation of a number,what is that number in base ten?

e. (2 pts) Given that 11110111 is the 8-bit two's complement representation of a number,what is that number in base ten?

f. (2 pts) Given that 10111111 is the 8-bit two's complement representation of a number,what is that number in base ten?

Page 3: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

3Exam #131 Page: 3 Name: _____________________________________

131

2. Suppose you have an array called a full of n integer values, indexed 0 through n-1. For simplicity, suppose there areno duplicates. You need to implement a function to return the index of a certain key value k if it occurs in the array,or -1 if it does not.

As we've discussed, two possible techniques are linear search (which our textbook calls serial search, and binarysearch.

a. (6 pts) Binary search places one additional requirement on the elements of the array. What is this additionalrequirement? It can be stated in a single sentence.

b. (6 pts) Assuming that the array a meets this additional requirement, describe how to apply the binary searchalgorithm to this problem. Be clear, precise, and concise. DO NOT WRITE CODE OR PSEUDOCODE.Instead, describe the main idea of the algorithm in plain english. Though it is not required, if you wish, youmay make reference to a, n and k in your description.

c. (6 pts) Linear search has the advantage of not having this extra requirement, and is much easier to code andimplement correctly, but has a serious drawback as compared to binary search. Explain what that is. Again, itcan be stated in a single sentence—but for full credit, you must be as precise as possible in your answer.

d. (6 pts) Assuming that the array a does not meet the requirements for binary search, describe how to apply thelinear search algorithm to this problem. Be clear, precise, and concise. DO NOT WRITE CODE ORPSEUDOCODE. Instead, describe the main idea of the algorithm in plain english. Though it is not required,if you wish, you may make reference to a, n and k in your description.

Page 4: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

4Exam #131 Page: 4 Name: _____________________________________

131

3. So far, our discussion of sorting has focused on two main sorting methods: insertion sort, and selection sort. Both ofthese can be implemented as an "in place" sort—one where the values are not copied anywhere outside the array,except to a single temporary variable.

As we've discussed, both of these sorting techniques can be implemented "in place" as successive passes, where thesorted array is built up at one end of the array or the other, in a series of n-1 steps. Our practice examples havefocussed on doing insertion sort where the sorted array is built left to right, and on selection sort, where the sortedarray is built right to left—but this is not the only possible implementation.

For each of the tables below, fill in the successive steps of the algorithm shown. The first two match what we'vedone before. The second two check whether you can adapt your understanding of how selection sort and insertionwork to a novel situation.

Grading for parts (a,b): ­1 for each incorrect entry, up to max of ­8Grading for parts (c,d): ­1 for each incorrect entry, up to max of ­4

a. (8 pts) Sort using insertion sort, building sorted array at start of array (at left, the way we've done it before):

[0] [1] [2] [3] [4]33 29 48 17 6

         

         

         

6 17 29 33 48

b. (8 pts) Sort using selection sort, building sorted array at end of array (at right, the way we've done it before.):

[0] [1] [2] [3] [4]33 29 48 17 6

         

         

         

6 17 29 33 48

Page 5: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

5 Exam #131 Page: 5 Name:_____________________________________

131

c. (4 pts) Sort using insertion sort, building sorted array at END of array (at right, the OPPOSITE of the waywe've done it before, but still using the approach used in insertion sort.):

[0] [1] [2] [3] [4]33 29 48 17 6

         

         

         

6 17 29 33 48

d. (4 pts) Sort using selection sort, building sorted array at START of array (at left, the OPPOSITE of the waywe've done it before, but still using the approach used in selection sort.):

[0] [1] [2] [3] [4]33 29 48 17 6

         

         

         

6 17 29 33 48

Page 6: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

6Exam #131 Page: 6 Name: _____________________________________

131

4. Most of the code we write in this course goes in files that end in .cpp. >But sometimes we worked with each of thefollowing types of files. For each type, explain what its purpose is, and its relationship to .cpp files.

DON'T USE TOO MANY WORDS. Write just enough to get the main point across. Excessively verbose answersthat stray off point may be penalized.

a. (4 pts) Purpose of .h files:

b. (4 pts) .h files relationship to .cpp files:

c. (4 pts) Purpose of .o files:

d. (4 pts) .o files relationship to .cpp files.

e. (4 pts) Purpose of Makefile:

f. (4 pts) Relationship of Makefile to .cpp files:

Page 7: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

struct Node { int data; Node *next;} void printList(Node *head) { for (Node *p=head; p!=NULL; p=p->next) { cout << p->data << endl; }}

7Exam #131 Page: 7 Name: _____________________________________

131

5. At right is a fairly common definition fora C++ struct Node that can be used tomake a linked list of int values, along witha conventional implementation of afunction that prints the value of the linkedlist, one per line. As a homeworkassignment, you were asked to rewrite thefunction as a recursive function, i.e. to dothe same thing as this iterative version,but using recursion. BUT THAT'S NOTWHAT I'M ASKING YOU TO DO ONTHIS EXAM. So read carefully.

a. (10 pts) Write the definition of aC++ function calledprintListBackwards that also takes a Node *head as its parameter, and prints the list backwards.Given that the struct Node only has next pointers and no prev pointers, you might think this isimpossible, but with recursion is not only possible, it is trivially easy. (Well, if you understand recursion itis.)

HINT: If you are stuck, start by writing out the recursive version of printList which prints the listforwards using recursion. Then think about how you could tweak the function to print the list backwardsinstead.

THERE IS ONE MORE PROBLEM ON THE FINAL PAGE!

Page 8: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

8 Exam #131 Page: 8 Name:_____________________________________

131

b. (6 pts) Given that there are no prev pointers, there is no straightforward way to print the list backwardswithout iteration that doesn't involve storing some amount of temporary data that is the same size as the listitself. For example, go might go through the list in the forward direction, and either store the data from thenodes in an array which you then iterate through backwards, or in another linked list that is built in theopposite diretion.

So how is it that this is possible with recursion? What is happening "under the hood" that makes thispossible? Briefly explain.

Hint: "activation record".

End of Examtotal points=100

Page 9: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

1Exam #132 Page: 1 Name: _____________________________________

132

CS32—Midterm ExamE01, W15, Phill Conrad, UC Santa BarbaraWednesday, 04/30/2015, 9:30am­10:45am

Name: ___________________________________________________

Umail Address: ______________________________@ umail.ucsb.edu

Please write your name above AND AT THE TOP OF EVERY PAGEBe sure you turn in every page of this exam.

Each exam is numbered (e.g. Exam #137).Each pages is numbered (e.g. Page 1, Page 2, etc.)The last page clearly says "End of Exam".

This exam is closed book, closed notes, closed mouth, cell phone offYou are permitted one sheet of paper (max size 8.5x11") on which to write notesThese sheets will be collected with the exam, and might not be returnedPlease write your name on your notes sheet

Page 10: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

2Exam #132 Page: 2 Name: _____________________________________

132

1. For these questions, assume 8-bit two's complement representation of negative integers. The left-most bit is the signbit, with 1 representing negative numbers, and 0 representing positive numbers.

a. (2 pts) Given the decimal number -95,what is this number's binary representation in 8-bit two's complement?

b. (2 pts) Given the decimal number -61,what is this number's binary representation in 8-bit two's complement?

c. (2 pts) Given the decimal number -28,what is this number's binary representation in 8-bit two's complement?

d. (2 pts) Given that 11011101 is the 8-bit two's complement representation of a number,what is that number in base ten?

e. (2 pts) Given that 10001010 is the 8-bit two's complement representation of a number,what is that number in base ten?

f. (2 pts) Given that 11101110 is the 8-bit two's complement representation of a number,what is that number in base ten?

Page 11: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

3Exam #132 Page: 3 Name: _____________________________________

132

2. Suppose you have an array called a full of n integer values, indexed 0 through n-1. For simplicity, suppose there areno duplicates. You need to implement a function to return the index of a certain key value k if it occurs in the array,or -1 if it does not.

As we've discussed, two possible techniques are linear search (which our textbook calls serial search, and binarysearch.

a. (6 pts) Binary search places one additional requirement on the elements of the array. What is this additionalrequirement? It can be stated in a single sentence.

b. (6 pts) Assuming that the array a meets this additional requirement, describe how to apply the binary searchalgorithm to this problem. Be clear, precise, and concise. DO NOT WRITE CODE OR PSEUDOCODE.Instead, describe the main idea of the algorithm in plain english. Though it is not required, if you wish, youmay make reference to a, n and k in your description.

c. (6 pts) Linear search has the advantage of not having this extra requirement, and is much easier to code andimplement correctly, but has a serious drawback as compared to binary search. Explain what that is. Again, itcan be stated in a single sentence—but for full credit, you must be as precise as possible in your answer.

d. (6 pts) Assuming that the array a does not meet the requirements for binary search, describe how to apply thelinear search algorithm to this problem. Be clear, precise, and concise. DO NOT WRITE CODE ORPSEUDOCODE. Instead, describe the main idea of the algorithm in plain english. Though it is not required,if you wish, you may make reference to a, n and k in your description.

Page 12: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

4Exam #132 Page: 4 Name: _____________________________________

132

3. So far, our discussion of sorting has focused on two main sorting methods: insertion sort, and selection sort. Both ofthese can be implemented as an "in place" sort—one where the values are not copied anywhere outside the array,except to a single temporary variable.

As we've discussed, both of these sorting techniques can be implemented "in place" as successive passes, where thesorted array is built up at one end of the array or the other, in a series of n-1 steps. Our practice examples havefocussed on doing insertion sort where the sorted array is built left to right, and on selection sort, where the sortedarray is built right to left—but this is not the only possible implementation.

For each of the tables below, fill in the successive steps of the algorithm shown. The first two match what we'vedone before. The second two check whether you can adapt your understanding of how selection sort and insertionwork to a novel situation.

Grading for parts (a,b): ­1 for each incorrect entry, up to max of ­8Grading for parts (c,d): ­1 for each incorrect entry, up to max of ­4

a. (8 pts) Sort using insertion sort, building sorted array at start of array (at left, the way we've done it before):

[0] [1] [2] [3] [4]33 29 48 17 6

         

         

         

6 17 29 33 48

b. (8 pts) Sort using selection sort, building sorted array at end of array (at right, the way we've done it before.):

[0] [1] [2] [3] [4]33 29 48 17 6

         

         

         

6 17 29 33 48

Page 13: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

5 Exam #132 Page: 5 Name:_____________________________________

132

c. (4 pts) Sort using insertion sort, building sorted array at END of array (at right, the OPPOSITE of the waywe've done it before, but still using the approach used in insertion sort.):

[0] [1] [2] [3] [4]33 29 48 17 6

         

         

         

6 17 29 33 48

d. (4 pts) Sort using selection sort, building sorted array at START of array (at left, the OPPOSITE of the waywe've done it before, but still using the approach used in selection sort.):

[0] [1] [2] [3] [4]33 29 48 17 6

         

         

         

6 17 29 33 48

Page 14: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

6Exam #132 Page: 6 Name: _____________________________________

132

4. Most of the code we write in this course goes in files that end in .cpp. >But sometimes we worked with each of thefollowing types of files. For each type, explain what its purpose is, and its relationship to .cpp files.

DON'T USE TOO MANY WORDS. Write just enough to get the main point across. Excessively verbose answersthat stray off point may be penalized.

a. (4 pts) Purpose of .h files:

b. (4 pts) .h files relationship to .cpp files:

c. (4 pts) Purpose of .o files:

d. (4 pts) .o files relationship to .cpp files.

e. (4 pts) Purpose of Makefile:

f. (4 pts) Relationship of Makefile to .cpp files:

Page 15: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

struct Node { int data; Node *next;} void printList(Node *head) { for (Node *p=head; p!=NULL; p=p->next) { cout << p->data << endl; }}

7Exam #132 Page: 7 Name: _____________________________________

132

5. At right is a fairly common definition fora C++ struct Node that can be used tomake a linked list of int values, along witha conventional implementation of afunction that prints the value of the linkedlist, one per line. As a homeworkassignment, you were asked to rewrite thefunction as a recursive function, i.e. to dothe same thing as this iterative version,but using recursion. BUT THAT'S NOTWHAT I'M ASKING YOU TO DO ONTHIS EXAM. So read carefully.

a. (10 pts) Write the definition of aC++ function calledprintListBackwards that also takes a Node *head as its parameter, and prints the list backwards.Given that the struct Node only has next pointers and no prev pointers, you might think this isimpossible, but with recursion is not only possible, it is trivially easy. (Well, if you understand recursion itis.)

HINT: If you are stuck, start by writing out the recursive version of printList which prints the listforwards using recursion. Then think about how you could tweak the function to print the list backwardsinstead.

THERE IS ONE MORE PROBLEM ON THE FINAL PAGE!

Page 16: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

8 Exam #132 Page: 8 Name:_____________________________________

132

b. (6 pts) Given that there are no prev pointers, there is no straightforward way to print the list backwardswithout iteration that doesn't involve storing some amount of temporary data that is the same size as the listitself. For example, go might go through the list in the forward direction, and either store the data from thenodes in an array which you then iterate through backwards, or in another linked list that is built in theopposite diretion.

So how is it that this is possible with recursion? What is happening "under the hood" that makes thispossible? Briefly explain.

Hint: "activation record".

End of Examtotal points=100

Page 17: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

1Exam #133 Page: 1 Name: _____________________________________

133

CS32—Midterm ExamE01, W15, Phill Conrad, UC Santa BarbaraWednesday, 04/30/2015, 9:30am­10:45am

Name: ___________________________________________________

Umail Address: ______________________________@ umail.ucsb.edu

Please write your name above AND AT THE TOP OF EVERY PAGEBe sure you turn in every page of this exam.

Each exam is numbered (e.g. Exam #137).Each pages is numbered (e.g. Page 1, Page 2, etc.)The last page clearly says "End of Exam".

This exam is closed book, closed notes, closed mouth, cell phone offYou are permitted one sheet of paper (max size 8.5x11") on which to write notesThese sheets will be collected with the exam, and might not be returnedPlease write your name on your notes sheet

Page 18: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

2Exam #133 Page: 2 Name: _____________________________________

133

1. For these questions, assume 8-bit two's complement representation of negative integers. The left-most bit is the signbit, with 1 representing negative numbers, and 0 representing positive numbers.

a. (2 pts) Given the decimal number -95,what is this number's binary representation in 8-bit two's complement?

b. (2 pts) Given the decimal number -50,what is this number's binary representation in 8-bit two's complement?

c. (2 pts) Given the decimal number -10,what is this number's binary representation in 8-bit two's complement?

d. (2 pts) Given that 11000001 is the 8-bit two's complement representation of a number,what is that number in base ten?

e. (2 pts) Given that 10010001 is the 8-bit two's complement representation of a number,what is that number in base ten?

f. (2 pts) Given that 11010101 is the 8-bit two's complement representation of a number,what is that number in base ten?

Page 19: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

3Exam #133 Page: 3 Name: _____________________________________

133

2. Suppose you have an array called a full of n integer values, indexed 0 through n-1. For simplicity, suppose there areno duplicates. You need to implement a function to return the index of a certain key value k if it occurs in the array,or -1 if it does not.

As we've discussed, two possible techniques are linear search (which our textbook calls serial search, and binarysearch.

a. (6 pts) Binary search places one additional requirement on the elements of the array. What is this additionalrequirement? It can be stated in a single sentence.

b. (6 pts) Assuming that the array a meets this additional requirement, describe how to apply the binary searchalgorithm to this problem. Be clear, precise, and concise. DO NOT WRITE CODE OR PSEUDOCODE.Instead, describe the main idea of the algorithm in plain english. Though it is not required, if you wish, youmay make reference to a, n and k in your description.

c. (6 pts) Linear search has the advantage of not having this extra requirement, and is much easier to code andimplement correctly, but has a serious drawback as compared to binary search. Explain what that is. Again, itcan be stated in a single sentence—but for full credit, you must be as precise as possible in your answer.

d. (6 pts) Assuming that the array a does not meet the requirements for binary search, describe how to apply thelinear search algorithm to this problem. Be clear, precise, and concise. DO NOT WRITE CODE ORPSEUDOCODE. Instead, describe the main idea of the algorithm in plain english. Though it is not required,if you wish, you may make reference to a, n and k in your description.

Page 20: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

4Exam #133 Page: 4 Name: _____________________________________

133

3. So far, our discussion of sorting has focused on two main sorting methods: insertion sort, and selection sort. Both ofthese can be implemented as an "in place" sort—one where the values are not copied anywhere outside the array,except to a single temporary variable.

As we've discussed, both of these sorting techniques can be implemented "in place" as successive passes, where thesorted array is built up at one end of the array or the other, in a series of n-1 steps. Our practice examples havefocussed on doing insertion sort where the sorted array is built left to right, and on selection sort, where the sortedarray is built right to left—but this is not the only possible implementation.

For each of the tables below, fill in the successive steps of the algorithm shown. The first two match what we'vedone before. The second two check whether you can adapt your understanding of how selection sort and insertionwork to a novel situation.

Grading for parts (a,b): ­1 for each incorrect entry, up to max of ­8Grading for parts (c,d): ­1 for each incorrect entry, up to max of ­4

a. (8 pts) Sort using insertion sort, building sorted array at start of array (at left, the way we've done it before):

[0] [1] [2] [3] [4]33 29 48 17 6

         

         

         

6 17 29 33 48

b. (8 pts) Sort using selection sort, building sorted array at end of array (at right, the way we've done it before.):

[0] [1] [2] [3] [4]33 29 48 17 6

         

         

         

6 17 29 33 48

Page 21: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

5 Exam #133 Page: 5 Name:_____________________________________

133

c. (4 pts) Sort using insertion sort, building sorted array at END of array (at right, the OPPOSITE of the waywe've done it before, but still using the approach used in insertion sort.):

[0] [1] [2] [3] [4]33 29 48 17 6

         

         

         

6 17 29 33 48

d. (4 pts) Sort using selection sort, building sorted array at START of array (at left, the OPPOSITE of the waywe've done it before, but still using the approach used in selection sort.):

[0] [1] [2] [3] [4]33 29 48 17 6

         

         

         

6 17 29 33 48

Page 22: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

6Exam #133 Page: 6 Name: _____________________________________

133

4. Most of the code we write in this course goes in files that end in .cpp. >But sometimes we worked with each of thefollowing types of files. For each type, explain what its purpose is, and its relationship to .cpp files.

DON'T USE TOO MANY WORDS. Write just enough to get the main point across. Excessively verbose answersthat stray off point may be penalized.

a. (4 pts) Purpose of .h files:

b. (4 pts) .h files relationship to .cpp files:

c. (4 pts) Purpose of .o files:

d. (4 pts) .o files relationship to .cpp files.

e. (4 pts) Purpose of Makefile:

f. (4 pts) Relationship of Makefile to .cpp files:

Page 23: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

struct Node { int data; Node *next;} void printList(Node *head) { for (Node *p=head; p!=NULL; p=p->next) { cout << p->data << endl; }}

7Exam #133 Page: 7 Name: _____________________________________

133

5. At right is a fairly common definition fora C++ struct Node that can be used tomake a linked list of int values, along witha conventional implementation of afunction that prints the value of the linkedlist, one per line. As a homeworkassignment, you were asked to rewrite thefunction as a recursive function, i.e. to dothe same thing as this iterative version,but using recursion. BUT THAT'S NOTWHAT I'M ASKING YOU TO DO ONTHIS EXAM. So read carefully.

a. (10 pts) Write the definition of aC++ function calledprintListBackwards that also takes a Node *head as its parameter, and prints the list backwards.Given that the struct Node only has next pointers and no prev pointers, you might think this isimpossible, but with recursion is not only possible, it is trivially easy. (Well, if you understand recursion itis.)

HINT: If you are stuck, start by writing out the recursive version of printList which prints the listforwards using recursion. Then think about how you could tweak the function to print the list backwardsinstead.

THERE IS ONE MORE PROBLEM ON THE FINAL PAGE!

Page 24: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

8 Exam #133 Page: 8 Name:_____________________________________

133

b. (6 pts) Given that there are no prev pointers, there is no straightforward way to print the list backwardswithout iteration that doesn't involve storing some amount of temporary data that is the same size as the listitself. For example, go might go through the list in the forward direction, and either store the data from thenodes in an array which you then iterate through backwards, or in another linked list that is built in theopposite diretion.

So how is it that this is possible with recursion? What is happening "under the hood" that makes thispossible? Briefly explain.

Hint: "activation record".

End of Examtotal points=100

Page 25: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

1Exam #134 Page: 1 Name: _____________________________________

134

CS32—Midterm ExamE01, W15, Phill Conrad, UC Santa BarbaraWednesday, 04/30/2015, 9:30am­10:45am

Name: ___________________________________________________

Umail Address: ______________________________@ umail.ucsb.edu

Please write your name above AND AT THE TOP OF EVERY PAGEBe sure you turn in every page of this exam.

Each exam is numbered (e.g. Exam #137).Each pages is numbered (e.g. Page 1, Page 2, etc.)The last page clearly says "End of Exam".

This exam is closed book, closed notes, closed mouth, cell phone offYou are permitted one sheet of paper (max size 8.5x11") on which to write notesThese sheets will be collected with the exam, and might not be returnedPlease write your name on your notes sheet

Page 26: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

2Exam #134 Page: 2 Name: _____________________________________

134

1. For these questions, assume 8-bit two's complement representation of negative integers. The left-most bit is the signbit, with 1 representing negative numbers, and 0 representing positive numbers.

a. (2 pts) Given the decimal number -96,what is this number's binary representation in 8-bit two's complement?

b. (2 pts) Given the decimal number -120,what is this number's binary representation in 8-bit two's complement?

c. (2 pts) Given the decimal number -113,what is this number's binary representation in 8-bit two's complement?

d. (2 pts) Given that 10101010 is the 8-bit two's complement representation of a number,what is that number in base ten?

e. (2 pts) Given that 10011100 is the 8-bit two's complement representation of a number,what is that number in base ten?

f. (2 pts) Given that 10101000 is the 8-bit two's complement representation of a number,what is that number in base ten?

Page 27: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

3Exam #134 Page: 3 Name: _____________________________________

134

2. Suppose you have an array called a full of n integer values, indexed 0 through n-1. For simplicity, suppose there areno duplicates. You need to implement a function to return the index of a certain key value k if it occurs in the array,or -1 if it does not.

As we've discussed, two possible techniques are linear search (which our textbook calls serial search, and binarysearch.

a. (6 pts) Binary search places one additional requirement on the elements of the array. What is this additionalrequirement? It can be stated in a single sentence.

b. (6 pts) Assuming that the array a meets this additional requirement, describe how to apply the binary searchalgorithm to this problem. Be clear, precise, and concise. DO NOT WRITE CODE OR PSEUDOCODE.Instead, describe the main idea of the algorithm in plain english. Though it is not required, if you wish, youmay make reference to a, n and k in your description.

c. (6 pts) Linear search has the advantage of not having this extra requirement, and is much easier to code andimplement correctly, but has a serious drawback as compared to binary search. Explain what that is. Again, itcan be stated in a single sentence—but for full credit, you must be as precise as possible in your answer.

d. (6 pts) Assuming that the array a does not meet the requirements for binary search, describe how to apply thelinear search algorithm to this problem. Be clear, precise, and concise. DO NOT WRITE CODE ORPSEUDOCODE. Instead, describe the main idea of the algorithm in plain english. Though it is not required,if you wish, you may make reference to a, n and k in your description.

Page 28: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

4Exam #134 Page: 4 Name: _____________________________________

134

3. So far, our discussion of sorting has focused on two main sorting methods: insertion sort, and selection sort. Both ofthese can be implemented as an "in place" sort—one where the values are not copied anywhere outside the array,except to a single temporary variable.

As we've discussed, both of these sorting techniques can be implemented "in place" as successive passes, where thesorted array is built up at one end of the array or the other, in a series of n-1 steps. Our practice examples havefocussed on doing insertion sort where the sorted array is built left to right, and on selection sort, where the sortedarray is built right to left—but this is not the only possible implementation.

For each of the tables below, fill in the successive steps of the algorithm shown. The first two match what we'vedone before. The second two check whether you can adapt your understanding of how selection sort and insertionwork to a novel situation.

Grading for parts (a,b): ­1 for each incorrect entry, up to max of ­8Grading for parts (c,d): ­1 for each incorrect entry, up to max of ­4

a. (8 pts) Sort using insertion sort, building sorted array at start of array (at left, the way we've done it before):

[0] [1] [2] [3] [4]33 29 48 17 6

         

         

         

6 17 29 33 48

b. (8 pts) Sort using selection sort, building sorted array at end of array (at right, the way we've done it before.):

[0] [1] [2] [3] [4]33 29 48 17 6

         

         

         

6 17 29 33 48

Page 29: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

5 Exam #134 Page: 5 Name:_____________________________________

134

c. (4 pts) Sort using insertion sort, building sorted array at END of array (at right, the OPPOSITE of the waywe've done it before, but still using the approach used in insertion sort.):

[0] [1] [2] [3] [4]33 29 48 17 6

         

         

         

6 17 29 33 48

d. (4 pts) Sort using selection sort, building sorted array at START of array (at left, the OPPOSITE of the waywe've done it before, but still using the approach used in selection sort.):

[0] [1] [2] [3] [4]33 29 48 17 6

         

         

         

6 17 29 33 48

Page 30: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

6Exam #134 Page: 6 Name: _____________________________________

134

4. Most of the code we write in this course goes in files that end in .cpp. >But sometimes we worked with each of thefollowing types of files. For each type, explain what its purpose is, and its relationship to .cpp files.

DON'T USE TOO MANY WORDS. Write just enough to get the main point across. Excessively verbose answersthat stray off point may be penalized.

a. (4 pts) Purpose of .h files:

b. (4 pts) .h files relationship to .cpp files:

c. (4 pts) Purpose of .o files:

d. (4 pts) .o files relationship to .cpp files.

e. (4 pts) Purpose of Makefile:

f. (4 pts) Relationship of Makefile to .cpp files:

Page 31: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

struct Node { int data; Node *next;} void printList(Node *head) { for (Node *p=head; p!=NULL; p=p->next) { cout << p->data << endl; }}

7Exam #134 Page: 7 Name: _____________________________________

134

5. At right is a fairly common definition fora C++ struct Node that can be used tomake a linked list of int values, along witha conventional implementation of afunction that prints the value of the linkedlist, one per line. As a homeworkassignment, you were asked to rewrite thefunction as a recursive function, i.e. to dothe same thing as this iterative version,but using recursion. BUT THAT'S NOTWHAT I'M ASKING YOU TO DO ONTHIS EXAM. So read carefully.

a. (10 pts) Write the definition of aC++ function calledprintListBackwards that also takes a Node *head as its parameter, and prints the list backwards.Given that the struct Node only has next pointers and no prev pointers, you might think this isimpossible, but with recursion is not only possible, it is trivially easy. (Well, if you understand recursion itis.)

HINT: If you are stuck, start by writing out the recursive version of printList which prints the listforwards using recursion. Then think about how you could tweak the function to print the list backwardsinstead.

THERE IS ONE MORE PROBLEM ON THE FINAL PAGE!

Page 32: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

8 Exam #134 Page: 8 Name:_____________________________________

134

b. (6 pts) Given that there are no prev pointers, there is no straightforward way to print the list backwardswithout iteration that doesn't involve storing some amount of temporary data that is the same size as the listitself. For example, go might go through the list in the forward direction, and either store the data from thenodes in an array which you then iterate through backwards, or in another linked list that is built in theopposite diretion.

So how is it that this is possible with recursion? What is happening "under the hood" that makes thispossible? Briefly explain.

Hint: "activation record".

End of Examtotal points=100

Page 33: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

1Exam #135 Page: 1 Name: _____________________________________

135

CS32—Midterm ExamE01, W15, Phill Conrad, UC Santa BarbaraWednesday, 04/30/2015, 9:30am­10:45am

Name: ___________________________________________________

Umail Address: ______________________________@ umail.ucsb.edu

Please write your name above AND AT THE TOP OF EVERY PAGEBe sure you turn in every page of this exam.

Each exam is numbered (e.g. Exam #137).Each pages is numbered (e.g. Page 1, Page 2, etc.)The last page clearly says "End of Exam".

This exam is closed book, closed notes, closed mouth, cell phone offYou are permitted one sheet of paper (max size 8.5x11") on which to write notesThese sheets will be collected with the exam, and might not be returnedPlease write your name on your notes sheet

Page 34: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

2Exam #135 Page: 2 Name: _____________________________________

135

1. For these questions, assume 8-bit two's complement representation of negative integers. The left-most bit is the signbit, with 1 representing negative numbers, and 0 representing positive numbers.

a. (2 pts) Given the decimal number -95,what is this number's binary representation in 8-bit two's complement?

b. (2 pts) Given the decimal number -26,what is this number's binary representation in 8-bit two's complement?

c. (2 pts) Given the decimal number -7,what is this number's binary representation in 8-bit two's complement?

d. (2 pts) Given that 11000011 is the 8-bit two's complement representation of a number,what is that number in base ten?

e. (2 pts) Given that 11010011 is the 8-bit two's complement representation of a number,what is that number in base ten?

f. (2 pts) Given that 11001011 is the 8-bit two's complement representation of a number,what is that number in base ten?

Page 35: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

3Exam #135 Page: 3 Name: _____________________________________

135

2. Suppose you have an array called a full of n integer values, indexed 0 through n-1. For simplicity, suppose there areno duplicates. You need to implement a function to return the index of a certain key value k if it occurs in the array,or -1 if it does not.

As we've discussed, two possible techniques are linear search (which our textbook calls serial search, and binarysearch.

a. (6 pts) Binary search places one additional requirement on the elements of the array. What is this additionalrequirement? It can be stated in a single sentence.

b. (6 pts) Assuming that the array a meets this additional requirement, describe how to apply the binary searchalgorithm to this problem. Be clear, precise, and concise. DO NOT WRITE CODE OR PSEUDOCODE.Instead, describe the main idea of the algorithm in plain english. Though it is not required, if you wish, youmay make reference to a, n and k in your description.

c. (6 pts) Linear search has the advantage of not having this extra requirement, and is much easier to code andimplement correctly, but has a serious drawback as compared to binary search. Explain what that is. Again, itcan be stated in a single sentence—but for full credit, you must be as precise as possible in your answer.

d. (6 pts) Assuming that the array a does not meet the requirements for binary search, describe how to apply thelinear search algorithm to this problem. Be clear, precise, and concise. DO NOT WRITE CODE ORPSEUDOCODE. Instead, describe the main idea of the algorithm in plain english. Though it is not required,if you wish, you may make reference to a, n and k in your description.

Page 36: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

4Exam #135 Page: 4 Name: _____________________________________

135

3. So far, our discussion of sorting has focused on two main sorting methods: insertion sort, and selection sort. Both ofthese can be implemented as an "in place" sort—one where the values are not copied anywhere outside the array,except to a single temporary variable.

As we've discussed, both of these sorting techniques can be implemented "in place" as successive passes, where thesorted array is built up at one end of the array or the other, in a series of n-1 steps. Our practice examples havefocussed on doing insertion sort where the sorted array is built left to right, and on selection sort, where the sortedarray is built right to left—but this is not the only possible implementation.

For each of the tables below, fill in the successive steps of the algorithm shown. The first two match what we'vedone before. The second two check whether you can adapt your understanding of how selection sort and insertionwork to a novel situation.

Grading for parts (a,b): ­1 for each incorrect entry, up to max of ­8Grading for parts (c,d): ­1 for each incorrect entry, up to max of ­4

a. (8 pts) Sort using insertion sort, building sorted array at start of array (at left, the way we've done it before):

[0] [1] [2] [3] [4]33 29 48 17 6

         

         

         

6 17 29 33 48

b. (8 pts) Sort using selection sort, building sorted array at end of array (at right, the way we've done it before.):

[0] [1] [2] [3] [4]33 29 48 17 6

         

         

         

6 17 29 33 48

Page 37: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

5 Exam #135 Page: 5 Name:_____________________________________

135

c. (4 pts) Sort using insertion sort, building sorted array at END of array (at right, the OPPOSITE of the waywe've done it before, but still using the approach used in insertion sort.):

[0] [1] [2] [3] [4]33 29 48 17 6

         

         

         

6 17 29 33 48

d. (4 pts) Sort using selection sort, building sorted array at START of array (at left, the OPPOSITE of the waywe've done it before, but still using the approach used in selection sort.):

[0] [1] [2] [3] [4]33 29 48 17 6

         

         

         

6 17 29 33 48

Page 38: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

6Exam #135 Page: 6 Name: _____________________________________

135

4. Most of the code we write in this course goes in files that end in .cpp. >But sometimes we worked with each of thefollowing types of files. For each type, explain what its purpose is, and its relationship to .cpp files.

DON'T USE TOO MANY WORDS. Write just enough to get the main point across. Excessively verbose answersthat stray off point may be penalized.

a. (4 pts) Purpose of .h files:

b. (4 pts) .h files relationship to .cpp files:

c. (4 pts) Purpose of .o files:

d. (4 pts) .o files relationship to .cpp files.

e. (4 pts) Purpose of Makefile:

f. (4 pts) Relationship of Makefile to .cpp files:

Page 39: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

struct Node { int data; Node *next;} void printList(Node *head) { for (Node *p=head; p!=NULL; p=p->next) { cout << p->data << endl; }}

7Exam #135 Page: 7 Name: _____________________________________

135

5. At right is a fairly common definition fora C++ struct Node that can be used tomake a linked list of int values, along witha conventional implementation of afunction that prints the value of the linkedlist, one per line. As a homeworkassignment, you were asked to rewrite thefunction as a recursive function, i.e. to dothe same thing as this iterative version,but using recursion. BUT THAT'S NOTWHAT I'M ASKING YOU TO DO ONTHIS EXAM. So read carefully.

a. (10 pts) Write the definition of aC++ function calledprintListBackwards that also takes a Node *head as its parameter, and prints the list backwards.Given that the struct Node only has next pointers and no prev pointers, you might think this isimpossible, but with recursion is not only possible, it is trivially easy. (Well, if you understand recursion itis.)

HINT: If you are stuck, start by writing out the recursive version of printList which prints the listforwards using recursion. Then think about how you could tweak the function to print the list backwardsinstead.

THERE IS ONE MORE PROBLEM ON THE FINAL PAGE!

Page 40: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

8 Exam #135 Page: 8 Name:_____________________________________

135

b. (6 pts) Given that there are no prev pointers, there is no straightforward way to print the list backwardswithout iteration that doesn't involve storing some amount of temporary data that is the same size as the listitself. For example, go might go through the list in the forward direction, and either store the data from thenodes in an array which you then iterate through backwards, or in another linked list that is built in theopposite diretion.

So how is it that this is possible with recursion? What is happening "under the hood" that makes thispossible? Briefly explain.

Hint: "activation record".

End of Examtotal points=100

Page 41: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

1Exam #136 Page: 1 Name: _____________________________________

136

CS32—Midterm ExamE01, W15, Phill Conrad, UC Santa BarbaraWednesday, 04/30/2015, 9:30am­10:45am

Name: ___________________________________________________

Umail Address: ______________________________@ umail.ucsb.edu

Please write your name above AND AT THE TOP OF EVERY PAGEBe sure you turn in every page of this exam.

Each exam is numbered (e.g. Exam #137).Each pages is numbered (e.g. Page 1, Page 2, etc.)The last page clearly says "End of Exam".

This exam is closed book, closed notes, closed mouth, cell phone offYou are permitted one sheet of paper (max size 8.5x11") on which to write notesThese sheets will be collected with the exam, and might not be returnedPlease write your name on your notes sheet

Page 42: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

2Exam #136 Page: 2 Name: _____________________________________

136

1. For these questions, assume 8-bit two's complement representation of negative integers. The left-most bit is the signbit, with 1 representing negative numbers, and 0 representing positive numbers.

a. (2 pts) Given the decimal number -95,what is this number's binary representation in 8-bit two's complement?

b. (2 pts) Given the decimal number -71,what is this number's binary representation in 8-bit two's complement?

c. (2 pts) Given the decimal number -115,what is this number's binary representation in 8-bit two's complement?

d. (2 pts) Given that 11000011 is the 8-bit two's complement representation of a number,what is that number in base ten?

e. (2 pts) Given that 11100110 is the 8-bit two's complement representation of a number,what is that number in base ten?

f. (2 pts) Given that 11111010 is the 8-bit two's complement representation of a number,what is that number in base ten?

Page 43: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

3Exam #136 Page: 3 Name: _____________________________________

136

2. Suppose you have an array called a full of n integer values, indexed 0 through n-1. For simplicity, suppose there areno duplicates. You need to implement a function to return the index of a certain key value k if it occurs in the array,or -1 if it does not.

As we've discussed, two possible techniques are linear search (which our textbook calls serial search, and binarysearch.

a. (6 pts) Binary search places one additional requirement on the elements of the array. What is this additionalrequirement? It can be stated in a single sentence.

b. (6 pts) Assuming that the array a meets this additional requirement, describe how to apply the binary searchalgorithm to this problem. Be clear, precise, and concise. DO NOT WRITE CODE OR PSEUDOCODE.Instead, describe the main idea of the algorithm in plain english. Though it is not required, if you wish, youmay make reference to a, n and k in your description.

c. (6 pts) Linear search has the advantage of not having this extra requirement, and is much easier to code andimplement correctly, but has a serious drawback as compared to binary search. Explain what that is. Again, itcan be stated in a single sentence—but for full credit, you must be as precise as possible in your answer.

d. (6 pts) Assuming that the array a does not meet the requirements for binary search, describe how to apply thelinear search algorithm to this problem. Be clear, precise, and concise. DO NOT WRITE CODE ORPSEUDOCODE. Instead, describe the main idea of the algorithm in plain english. Though it is not required,if you wish, you may make reference to a, n and k in your description.

Page 44: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

4Exam #136 Page: 4 Name: _____________________________________

136

3. So far, our discussion of sorting has focused on two main sorting methods: insertion sort, and selection sort. Both ofthese can be implemented as an "in place" sort—one where the values are not copied anywhere outside the array,except to a single temporary variable.

As we've discussed, both of these sorting techniques can be implemented "in place" as successive passes, where thesorted array is built up at one end of the array or the other, in a series of n-1 steps. Our practice examples havefocussed on doing insertion sort where the sorted array is built left to right, and on selection sort, where the sortedarray is built right to left—but this is not the only possible implementation.

For each of the tables below, fill in the successive steps of the algorithm shown. The first two match what we'vedone before. The second two check whether you can adapt your understanding of how selection sort and insertionwork to a novel situation.

Grading for parts (a,b): ­1 for each incorrect entry, up to max of ­8Grading for parts (c,d): ­1 for each incorrect entry, up to max of ­4

a. (8 pts) Sort using insertion sort, building sorted array at start of array (at left, the way we've done it before):

[0] [1] [2] [3] [4]33 29 48 17 6

         

         

         

6 17 29 33 48

b. (8 pts) Sort using selection sort, building sorted array at end of array (at right, the way we've done it before.):

[0] [1] [2] [3] [4]33 29 48 17 6

         

         

         

6 17 29 33 48

Page 45: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

5 Exam #136 Page: 5 Name:_____________________________________

136

c. (4 pts) Sort using insertion sort, building sorted array at END of array (at right, the OPPOSITE of the waywe've done it before, but still using the approach used in insertion sort.):

[0] [1] [2] [3] [4]33 29 48 17 6

         

         

         

6 17 29 33 48

d. (4 pts) Sort using selection sort, building sorted array at START of array (at left, the OPPOSITE of the waywe've done it before, but still using the approach used in selection sort.):

[0] [1] [2] [3] [4]33 29 48 17 6

         

         

         

6 17 29 33 48

Page 46: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

6Exam #136 Page: 6 Name: _____________________________________

136

4. Most of the code we write in this course goes in files that end in .cpp. >But sometimes we worked with each of thefollowing types of files. For each type, explain what its purpose is, and its relationship to .cpp files.

DON'T USE TOO MANY WORDS. Write just enough to get the main point across. Excessively verbose answersthat stray off point may be penalized.

a. (4 pts) Purpose of .h files:

b. (4 pts) .h files relationship to .cpp files:

c. (4 pts) Purpose of .o files:

d. (4 pts) .o files relationship to .cpp files.

e. (4 pts) Purpose of Makefile:

f. (4 pts) Relationship of Makefile to .cpp files:

Page 47: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

struct Node { int data; Node *next;} void printList(Node *head) { for (Node *p=head; p!=NULL; p=p->next) { cout << p->data << endl; }}

7Exam #136 Page: 7 Name: _____________________________________

136

5. At right is a fairly common definition fora C++ struct Node that can be used tomake a linked list of int values, along witha conventional implementation of afunction that prints the value of the linkedlist, one per line. As a homeworkassignment, you were asked to rewrite thefunction as a recursive function, i.e. to dothe same thing as this iterative version,but using recursion. BUT THAT'S NOTWHAT I'M ASKING YOU TO DO ONTHIS EXAM. So read carefully.

a. (10 pts) Write the definition of aC++ function calledprintListBackwards that also takes a Node *head as its parameter, and prints the list backwards.Given that the struct Node only has next pointers and no prev pointers, you might think this isimpossible, but with recursion is not only possible, it is trivially easy. (Well, if you understand recursion itis.)

HINT: If you are stuck, start by writing out the recursive version of printList which prints the listforwards using recursion. Then think about how you could tweak the function to print the list backwardsinstead.

THERE IS ONE MORE PROBLEM ON THE FINAL PAGE!

Page 48: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

8 Exam #136 Page: 8 Name:_____________________________________

136

b. (6 pts) Given that there are no prev pointers, there is no straightforward way to print the list backwardswithout iteration that doesn't involve storing some amount of temporary data that is the same size as the listitself. For example, go might go through the list in the forward direction, and either store the data from thenodes in an array which you then iterate through backwards, or in another linked list that is built in theopposite diretion.

So how is it that this is possible with recursion? What is happening "under the hood" that makes thispossible? Briefly explain.

Hint: "activation record".

End of Examtotal points=100

Page 49: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

1Exam #137 Page: 1 Name: _____________________________________

137

CS32—Midterm ExamE01, W15, Phill Conrad, UC Santa BarbaraWednesday, 04/30/2015, 9:30am­10:45am

Name: ___________________________________________________

Umail Address: ______________________________@ umail.ucsb.edu

Please write your name above AND AT THE TOP OF EVERY PAGEBe sure you turn in every page of this exam.

Each exam is numbered (e.g. Exam #137).Each pages is numbered (e.g. Page 1, Page 2, etc.)The last page clearly says "End of Exam".

This exam is closed book, closed notes, closed mouth, cell phone offYou are permitted one sheet of paper (max size 8.5x11") on which to write notesThese sheets will be collected with the exam, and might not be returnedPlease write your name on your notes sheet

Page 50: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

2Exam #137 Page: 2 Name: _____________________________________

137

1. For these questions, assume 8-bit two's complement representation of negative integers. The left-most bit is the signbit, with 1 representing negative numbers, and 0 representing positive numbers.

a. (2 pts) Given the decimal number -95,what is this number's binary representation in 8-bit two's complement?

b. (2 pts) Given the decimal number -105,what is this number's binary representation in 8-bit two's complement?

c. (2 pts) Given the decimal number -9,what is this number's binary representation in 8-bit two's complement?

d. (2 pts) Given that 11011100 is the 8-bit two's complement representation of a number,what is that number in base ten?

e. (2 pts) Given that 10011101 is the 8-bit two's complement representation of a number,what is that number in base ten?

f. (2 pts) Given that 10011100 is the 8-bit two's complement representation of a number,what is that number in base ten?

Page 51: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

3Exam #137 Page: 3 Name: _____________________________________

137

2. Suppose you have an array called a full of n integer values, indexed 0 through n-1. For simplicity, suppose there areno duplicates. You need to implement a function to return the index of a certain key value k if it occurs in the array,or -1 if it does not.

As we've discussed, two possible techniques are linear search (which our textbook calls serial search, and binarysearch.

a. (6 pts) Binary search places one additional requirement on the elements of the array. What is this additionalrequirement? It can be stated in a single sentence.

b. (6 pts) Assuming that the array a meets this additional requirement, describe how to apply the binary searchalgorithm to this problem. Be clear, precise, and concise. DO NOT WRITE CODE OR PSEUDOCODE.Instead, describe the main idea of the algorithm in plain english. Though it is not required, if you wish, youmay make reference to a, n and k in your description.

c. (6 pts) Linear search has the advantage of not having this extra requirement, and is much easier to code andimplement correctly, but has a serious drawback as compared to binary search. Explain what that is. Again, itcan be stated in a single sentence—but for full credit, you must be as precise as possible in your answer.

d. (6 pts) Assuming that the array a does not meet the requirements for binary search, describe how to apply thelinear search algorithm to this problem. Be clear, precise, and concise. DO NOT WRITE CODE ORPSEUDOCODE. Instead, describe the main idea of the algorithm in plain english. Though it is not required,if you wish, you may make reference to a, n and k in your description.

Page 52: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

4Exam #137 Page: 4 Name: _____________________________________

137

3. So far, our discussion of sorting has focused on two main sorting methods: insertion sort, and selection sort. Both ofthese can be implemented as an "in place" sort—one where the values are not copied anywhere outside the array,except to a single temporary variable.

As we've discussed, both of these sorting techniques can be implemented "in place" as successive passes, where thesorted array is built up at one end of the array or the other, in a series of n-1 steps. Our practice examples havefocussed on doing insertion sort where the sorted array is built left to right, and on selection sort, where the sortedarray is built right to left—but this is not the only possible implementation.

For each of the tables below, fill in the successive steps of the algorithm shown. The first two match what we'vedone before. The second two check whether you can adapt your understanding of how selection sort and insertionwork to a novel situation.

Grading for parts (a,b): ­1 for each incorrect entry, up to max of ­8Grading for parts (c,d): ­1 for each incorrect entry, up to max of ­4

a. (8 pts) Sort using insertion sort, building sorted array at start of array (at left, the way we've done it before):

[0] [1] [2] [3] [4]33 29 48 17 6

         

         

         

6 17 29 33 48

b. (8 pts) Sort using selection sort, building sorted array at end of array (at right, the way we've done it before.):

[0] [1] [2] [3] [4]33 29 48 17 6

         

         

         

6 17 29 33 48

Page 53: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

5 Exam #137 Page: 5 Name:_____________________________________

137

c. (4 pts) Sort using insertion sort, building sorted array at END of array (at right, the OPPOSITE of the waywe've done it before, but still using the approach used in insertion sort.):

[0] [1] [2] [3] [4]33 29 48 17 6

         

         

         

6 17 29 33 48

d. (4 pts) Sort using selection sort, building sorted array at START of array (at left, the OPPOSITE of the waywe've done it before, but still using the approach used in selection sort.):

[0] [1] [2] [3] [4]33 29 48 17 6

         

         

         

6 17 29 33 48

Page 54: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

6Exam #137 Page: 6 Name: _____________________________________

137

4. Most of the code we write in this course goes in files that end in .cpp. >But sometimes we worked with each of thefollowing types of files. For each type, explain what its purpose is, and its relationship to .cpp files.

DON'T USE TOO MANY WORDS. Write just enough to get the main point across. Excessively verbose answersthat stray off point may be penalized.

a. (4 pts) Purpose of .h files:

b. (4 pts) .h files relationship to .cpp files:

c. (4 pts) Purpose of .o files:

d. (4 pts) .o files relationship to .cpp files.

e. (4 pts) Purpose of Makefile:

f. (4 pts) Relationship of Makefile to .cpp files:

Page 55: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

struct Node { int data; Node *next;} void printList(Node *head) { for (Node *p=head; p!=NULL; p=p->next) { cout << p->data << endl; }}

7Exam #137 Page: 7 Name: _____________________________________

137

5. At right is a fairly common definition fora C++ struct Node that can be used tomake a linked list of int values, along witha conventional implementation of afunction that prints the value of the linkedlist, one per line. As a homeworkassignment, you were asked to rewrite thefunction as a recursive function, i.e. to dothe same thing as this iterative version,but using recursion. BUT THAT'S NOTWHAT I'M ASKING YOU TO DO ONTHIS EXAM. So read carefully.

a. (10 pts) Write the definition of aC++ function calledprintListBackwards that also takes a Node *head as its parameter, and prints the list backwards.Given that the struct Node only has next pointers and no prev pointers, you might think this isimpossible, but with recursion is not only possible, it is trivially easy. (Well, if you understand recursion itis.)

HINT: If you are stuck, start by writing out the recursive version of printList which prints the listforwards using recursion. Then think about how you could tweak the function to print the list backwardsinstead.

THERE IS ONE MORE PROBLEM ON THE FINAL PAGE!

Page 56: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

8 Exam #137 Page: 8 Name:_____________________________________

137

b. (6 pts) Given that there are no prev pointers, there is no straightforward way to print the list backwardswithout iteration that doesn't involve storing some amount of temporary data that is the same size as the listitself. For example, go might go through the list in the forward direction, and either store the data from thenodes in an array which you then iterate through backwards, or in another linked list that is built in theopposite diretion.

So how is it that this is possible with recursion? What is happening "under the hood" that makes thispossible? Briefly explain.

Hint: "activation record".

End of Examtotal points=100

Page 57: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

1Exam #138 Page: 1 Name: _____________________________________

138

CS32—Midterm ExamE01, W15, Phill Conrad, UC Santa BarbaraWednesday, 04/30/2015, 9:30am­10:45am

Name: ___________________________________________________

Umail Address: ______________________________@ umail.ucsb.edu

Please write your name above AND AT THE TOP OF EVERY PAGEBe sure you turn in every page of this exam.

Each exam is numbered (e.g. Exam #137).Each pages is numbered (e.g. Page 1, Page 2, etc.)The last page clearly says "End of Exam".

This exam is closed book, closed notes, closed mouth, cell phone offYou are permitted one sheet of paper (max size 8.5x11") on which to write notesThese sheets will be collected with the exam, and might not be returnedPlease write your name on your notes sheet

Page 58: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

2Exam #138 Page: 2 Name: _____________________________________

138

1. For these questions, assume 8-bit two's complement representation of negative integers. The left-most bit is the signbit, with 1 representing negative numbers, and 0 representing positive numbers.

a. (2 pts) Given the decimal number -95,what is this number's binary representation in 8-bit two's complement?

b. (2 pts) Given the decimal number -2,what is this number's binary representation in 8-bit two's complement?

c. (2 pts) Given the decimal number -72,what is this number's binary representation in 8-bit two's complement?

d. (2 pts) Given that 10010000 is the 8-bit two's complement representation of a number,what is that number in base ten?

e. (2 pts) Given that 11111000 is the 8-bit two's complement representation of a number,what is that number in base ten?

f. (2 pts) Given that 10110100 is the 8-bit two's complement representation of a number,what is that number in base ten?

Page 59: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

3Exam #138 Page: 3 Name: _____________________________________

138

2. Suppose you have an array called a full of n integer values, indexed 0 through n-1. For simplicity, suppose there areno duplicates. You need to implement a function to return the index of a certain key value k if it occurs in the array,or -1 if it does not.

As we've discussed, two possible techniques are linear search (which our textbook calls serial search, and binarysearch.

a. (6 pts) Binary search places one additional requirement on the elements of the array. What is this additionalrequirement? It can be stated in a single sentence.

b. (6 pts) Assuming that the array a meets this additional requirement, describe how to apply the binary searchalgorithm to this problem. Be clear, precise, and concise. DO NOT WRITE CODE OR PSEUDOCODE.Instead, describe the main idea of the algorithm in plain english. Though it is not required, if you wish, youmay make reference to a, n and k in your description.

c. (6 pts) Linear search has the advantage of not having this extra requirement, and is much easier to code andimplement correctly, but has a serious drawback as compared to binary search. Explain what that is. Again, itcan be stated in a single sentence—but for full credit, you must be as precise as possible in your answer.

d. (6 pts) Assuming that the array a does not meet the requirements for binary search, describe how to apply thelinear search algorithm to this problem. Be clear, precise, and concise. DO NOT WRITE CODE ORPSEUDOCODE. Instead, describe the main idea of the algorithm in plain english. Though it is not required,if you wish, you may make reference to a, n and k in your description.

Page 60: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

4Exam #138 Page: 4 Name: _____________________________________

138

3. So far, our discussion of sorting has focused on two main sorting methods: insertion sort, and selection sort. Both ofthese can be implemented as an "in place" sort—one where the values are not copied anywhere outside the array,except to a single temporary variable.

As we've discussed, both of these sorting techniques can be implemented "in place" as successive passes, where thesorted array is built up at one end of the array or the other, in a series of n-1 steps. Our practice examples havefocussed on doing insertion sort where the sorted array is built left to right, and on selection sort, where the sortedarray is built right to left—but this is not the only possible implementation.

For each of the tables below, fill in the successive steps of the algorithm shown. The first two match what we'vedone before. The second two check whether you can adapt your understanding of how selection sort and insertionwork to a novel situation.

Grading for parts (a,b): ­1 for each incorrect entry, up to max of ­8Grading for parts (c,d): ­1 for each incorrect entry, up to max of ­4

a. (8 pts) Sort using insertion sort, building sorted array at start of array (at left, the way we've done it before):

[0] [1] [2] [3] [4]33 29 48 17 6

         

         

         

6 17 29 33 48

b. (8 pts) Sort using selection sort, building sorted array at end of array (at right, the way we've done it before.):

[0] [1] [2] [3] [4]33 29 48 17 6

         

         

         

6 17 29 33 48

Page 61: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

5 Exam #138 Page: 5 Name:_____________________________________

138

c. (4 pts) Sort using insertion sort, building sorted array at END of array (at right, the OPPOSITE of the waywe've done it before, but still using the approach used in insertion sort.):

[0] [1] [2] [3] [4]33 29 48 17 6

         

         

         

6 17 29 33 48

d. (4 pts) Sort using selection sort, building sorted array at START of array (at left, the OPPOSITE of the waywe've done it before, but still using the approach used in selection sort.):

[0] [1] [2] [3] [4]33 29 48 17 6

         

         

         

6 17 29 33 48

Page 62: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

6Exam #138 Page: 6 Name: _____________________________________

138

4. Most of the code we write in this course goes in files that end in .cpp. >But sometimes we worked with each of thefollowing types of files. For each type, explain what its purpose is, and its relationship to .cpp files.

DON'T USE TOO MANY WORDS. Write just enough to get the main point across. Excessively verbose answersthat stray off point may be penalized.

a. (4 pts) Purpose of .h files:

b. (4 pts) .h files relationship to .cpp files:

c. (4 pts) Purpose of .o files:

d. (4 pts) .o files relationship to .cpp files.

e. (4 pts) Purpose of Makefile:

f. (4 pts) Relationship of Makefile to .cpp files:

Page 63: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

struct Node { int data; Node *next;} void printList(Node *head) { for (Node *p=head; p!=NULL; p=p->next) { cout << p->data << endl; }}

7Exam #138 Page: 7 Name: _____________________________________

138

5. At right is a fairly common definition fora C++ struct Node that can be used tomake a linked list of int values, along witha conventional implementation of afunction that prints the value of the linkedlist, one per line. As a homeworkassignment, you were asked to rewrite thefunction as a recursive function, i.e. to dothe same thing as this iterative version,but using recursion. BUT THAT'S NOTWHAT I'M ASKING YOU TO DO ONTHIS EXAM. So read carefully.

a. (10 pts) Write the definition of aC++ function calledprintListBackwards that also takes a Node *head as its parameter, and prints the list backwards.Given that the struct Node only has next pointers and no prev pointers, you might think this isimpossible, but with recursion is not only possible, it is trivially easy. (Well, if you understand recursion itis.)

HINT: If you are stuck, start by writing out the recursive version of printList which prints the listforwards using recursion. Then think about how you could tweak the function to print the list backwardsinstead.

THERE IS ONE MORE PROBLEM ON THE FINAL PAGE!

Page 64: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

8 Exam #138 Page: 8 Name:_____________________________________

138

b. (6 pts) Given that there are no prev pointers, there is no straightforward way to print the list backwardswithout iteration that doesn't involve storing some amount of temporary data that is the same size as the listitself. For example, go might go through the list in the forward direction, and either store the data from thenodes in an array which you then iterate through backwards, or in another linked list that is built in theopposite diretion.

So how is it that this is possible with recursion? What is happening "under the hood" that makes thispossible? Briefly explain.

Hint: "activation record".

End of Examtotal points=100

Page 65: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

1Exam #139 Page: 1 Name: _____________________________________

139

CS32—Midterm ExamE01, W15, Phill Conrad, UC Santa BarbaraWednesday, 04/30/2015, 9:30am­10:45am

Name: ___________________________________________________

Umail Address: ______________________________@ umail.ucsb.edu

Please write your name above AND AT THE TOP OF EVERY PAGEBe sure you turn in every page of this exam.

Each exam is numbered (e.g. Exam #137).Each pages is numbered (e.g. Page 1, Page 2, etc.)The last page clearly says "End of Exam".

This exam is closed book, closed notes, closed mouth, cell phone offYou are permitted one sheet of paper (max size 8.5x11") on which to write notesThese sheets will be collected with the exam, and might not be returnedPlease write your name on your notes sheet

Page 66: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

2Exam #139 Page: 2 Name: _____________________________________

139

1. For these questions, assume 8-bit two's complement representation of negative integers. The left-most bit is the signbit, with 1 representing negative numbers, and 0 representing positive numbers.

a. (2 pts) Given the decimal number -95,what is this number's binary representation in 8-bit two's complement?

b. (2 pts) Given the decimal number -36,what is this number's binary representation in 8-bit two's complement?

c. (2 pts) Given the decimal number -93,what is this number's binary representation in 8-bit two's complement?

d. (2 pts) Given that 10101001 is the 8-bit two's complement representation of a number,what is that number in base ten?

e. (2 pts) Given that 10101111 is the 8-bit two's complement representation of a number,what is that number in base ten?

f. (2 pts) Given that 11010111 is the 8-bit two's complement representation of a number,what is that number in base ten?

Page 67: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

3Exam #139 Page: 3 Name: _____________________________________

139

2. Suppose you have an array called a full of n integer values, indexed 0 through n-1. For simplicity, suppose there areno duplicates. You need to implement a function to return the index of a certain key value k if it occurs in the array,or -1 if it does not.

As we've discussed, two possible techniques are linear search (which our textbook calls serial search, and binarysearch.

a. (6 pts) Binary search places one additional requirement on the elements of the array. What is this additionalrequirement? It can be stated in a single sentence.

b. (6 pts) Assuming that the array a meets this additional requirement, describe how to apply the binary searchalgorithm to this problem. Be clear, precise, and concise. DO NOT WRITE CODE OR PSEUDOCODE.Instead, describe the main idea of the algorithm in plain english. Though it is not required, if you wish, youmay make reference to a, n and k in your description.

c. (6 pts) Linear search has the advantage of not having this extra requirement, and is much easier to code andimplement correctly, but has a serious drawback as compared to binary search. Explain what that is. Again, itcan be stated in a single sentence—but for full credit, you must be as precise as possible in your answer.

d. (6 pts) Assuming that the array a does not meet the requirements for binary search, describe how to apply thelinear search algorithm to this problem. Be clear, precise, and concise. DO NOT WRITE CODE ORPSEUDOCODE. Instead, describe the main idea of the algorithm in plain english. Though it is not required,if you wish, you may make reference to a, n and k in your description.

Page 68: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

4Exam #139 Page: 4 Name: _____________________________________

139

3. So far, our discussion of sorting has focused on two main sorting methods: insertion sort, and selection sort. Both ofthese can be implemented as an "in place" sort—one where the values are not copied anywhere outside the array,except to a single temporary variable.

As we've discussed, both of these sorting techniques can be implemented "in place" as successive passes, where thesorted array is built up at one end of the array or the other, in a series of n-1 steps. Our practice examples havefocussed on doing insertion sort where the sorted array is built left to right, and on selection sort, where the sortedarray is built right to left—but this is not the only possible implementation.

For each of the tables below, fill in the successive steps of the algorithm shown. The first two match what we'vedone before. The second two check whether you can adapt your understanding of how selection sort and insertionwork to a novel situation.

Grading for parts (a,b): ­1 for each incorrect entry, up to max of ­8Grading for parts (c,d): ­1 for each incorrect entry, up to max of ­4

a. (8 pts) Sort using insertion sort, building sorted array at start of array (at left, the way we've done it before):

[0] [1] [2] [3] [4]33 29 48 17 6

         

         

         

6 17 29 33 48

b. (8 pts) Sort using selection sort, building sorted array at end of array (at right, the way we've done it before.):

[0] [1] [2] [3] [4]33 29 48 17 6

         

         

         

6 17 29 33 48

Page 69: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

5 Exam #139 Page: 5 Name:_____________________________________

139

c. (4 pts) Sort using insertion sort, building sorted array at END of array (at right, the OPPOSITE of the waywe've done it before, but still using the approach used in insertion sort.):

[0] [1] [2] [3] [4]33 29 48 17 6

         

         

         

6 17 29 33 48

d. (4 pts) Sort using selection sort, building sorted array at START of array (at left, the OPPOSITE of the waywe've done it before, but still using the approach used in selection sort.):

[0] [1] [2] [3] [4]33 29 48 17 6

         

         

         

6 17 29 33 48

Page 70: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

6Exam #139 Page: 6 Name: _____________________________________

139

4. Most of the code we write in this course goes in files that end in .cpp. >But sometimes we worked with each of thefollowing types of files. For each type, explain what its purpose is, and its relationship to .cpp files.

DON'T USE TOO MANY WORDS. Write just enough to get the main point across. Excessively verbose answersthat stray off point may be penalized.

a. (4 pts) Purpose of .h files:

b. (4 pts) .h files relationship to .cpp files:

c. (4 pts) Purpose of .o files:

d. (4 pts) .o files relationship to .cpp files.

e. (4 pts) Purpose of Makefile:

f. (4 pts) Relationship of Makefile to .cpp files:

Page 71: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

struct Node { int data; Node *next;} void printList(Node *head) { for (Node *p=head; p!=NULL; p=p->next) { cout << p->data << endl; }}

7Exam #139 Page: 7 Name: _____________________________________

139

5. At right is a fairly common definition fora C++ struct Node that can be used tomake a linked list of int values, along witha conventional implementation of afunction that prints the value of the linkedlist, one per line. As a homeworkassignment, you were asked to rewrite thefunction as a recursive function, i.e. to dothe same thing as this iterative version,but using recursion. BUT THAT'S NOTWHAT I'M ASKING YOU TO DO ONTHIS EXAM. So read carefully.

a. (10 pts) Write the definition of aC++ function calledprintListBackwards that also takes a Node *head as its parameter, and prints the list backwards.Given that the struct Node only has next pointers and no prev pointers, you might think this isimpossible, but with recursion is not only possible, it is trivially easy. (Well, if you understand recursion itis.)

HINT: If you are stuck, start by writing out the recursive version of printList which prints the listforwards using recursion. Then think about how you could tweak the function to print the list backwardsinstead.

THERE IS ONE MORE PROBLEM ON THE FINAL PAGE!

Page 72: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

8 Exam #139 Page: 8 Name:_____________________________________

139

b. (6 pts) Given that there are no prev pointers, there is no straightforward way to print the list backwardswithout iteration that doesn't involve storing some amount of temporary data that is the same size as the listitself. For example, go might go through the list in the forward direction, and either store the data from thenodes in an array which you then iterate through backwards, or in another linked list that is built in theopposite diretion.

So how is it that this is possible with recursion? What is happening "under the hood" that makes thispossible? Briefly explain.

Hint: "activation record".

End of Examtotal points=100

Page 73: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

1Exam #140 Page: 1 Name: _____________________________________

140

CS32—Midterm ExamE01, W15, Phill Conrad, UC Santa BarbaraWednesday, 04/30/2015, 9:30am­10:45am

Name: ___________________________________________________

Umail Address: ______________________________@ umail.ucsb.edu

Please write your name above AND AT THE TOP OF EVERY PAGEBe sure you turn in every page of this exam.

Each exam is numbered (e.g. Exam #137).Each pages is numbered (e.g. Page 1, Page 2, etc.)The last page clearly says "End of Exam".

This exam is closed book, closed notes, closed mouth, cell phone offYou are permitted one sheet of paper (max size 8.5x11") on which to write notesThese sheets will be collected with the exam, and might not be returnedPlease write your name on your notes sheet

Page 74: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

2Exam #140 Page: 2 Name: _____________________________________

140

1. For these questions, assume 8-bit two's complement representation of negative integers. The left-most bit is the signbit, with 1 representing negative numbers, and 0 representing positive numbers.

a. (2 pts) Given the decimal number -95,what is this number's binary representation in 8-bit two's complement?

b. (2 pts) Given the decimal number -80,what is this number's binary representation in 8-bit two's complement?

c. (2 pts) Given the decimal number -74,what is this number's binary representation in 8-bit two's complement?

d. (2 pts) Given that 10101001 is the 8-bit two's complement representation of a number,what is that number in base ten?

e. (2 pts) Given that 11000010 is the 8-bit two's complement representation of a number,what is that number in base ten?

f. (2 pts) Given that 10000101 is the 8-bit two's complement representation of a number,what is that number in base ten?

Page 75: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

3Exam #140 Page: 3 Name: _____________________________________

140

2. Suppose you have an array called a full of n integer values, indexed 0 through n-1. For simplicity, suppose there areno duplicates. You need to implement a function to return the index of a certain key value k if it occurs in the array,or -1 if it does not.

As we've discussed, two possible techniques are linear search (which our textbook calls serial search, and binarysearch.

a. (6 pts) Binary search places one additional requirement on the elements of the array. What is this additionalrequirement? It can be stated in a single sentence.

b. (6 pts) Assuming that the array a meets this additional requirement, describe how to apply the binary searchalgorithm to this problem. Be clear, precise, and concise. DO NOT WRITE CODE OR PSEUDOCODE.Instead, describe the main idea of the algorithm in plain english. Though it is not required, if you wish, youmay make reference to a, n and k in your description.

c. (6 pts) Linear search has the advantage of not having this extra requirement, and is much easier to code andimplement correctly, but has a serious drawback as compared to binary search. Explain what that is. Again, itcan be stated in a single sentence—but for full credit, you must be as precise as possible in your answer.

d. (6 pts) Assuming that the array a does not meet the requirements for binary search, describe how to apply thelinear search algorithm to this problem. Be clear, precise, and concise. DO NOT WRITE CODE ORPSEUDOCODE. Instead, describe the main idea of the algorithm in plain english. Though it is not required,if you wish, you may make reference to a, n and k in your description.

Page 76: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

4Exam #140 Page: 4 Name: _____________________________________

140

3. So far, our discussion of sorting has focused on two main sorting methods: insertion sort, and selection sort. Both ofthese can be implemented as an "in place" sort—one where the values are not copied anywhere outside the array,except to a single temporary variable.

As we've discussed, both of these sorting techniques can be implemented "in place" as successive passes, where thesorted array is built up at one end of the array or the other, in a series of n-1 steps. Our practice examples havefocussed on doing insertion sort where the sorted array is built left to right, and on selection sort, where the sortedarray is built right to left—but this is not the only possible implementation.

For each of the tables below, fill in the successive steps of the algorithm shown. The first two match what we'vedone before. The second two check whether you can adapt your understanding of how selection sort and insertionwork to a novel situation.

Grading for parts (a,b): ­1 for each incorrect entry, up to max of ­8Grading for parts (c,d): ­1 for each incorrect entry, up to max of ­4

a. (8 pts) Sort using insertion sort, building sorted array at start of array (at left, the way we've done it before):

[0] [1] [2] [3] [4]33 29 48 17 6

         

         

         

6 17 29 33 48

b. (8 pts) Sort using selection sort, building sorted array at end of array (at right, the way we've done it before.):

[0] [1] [2] [3] [4]33 29 48 17 6

         

         

         

6 17 29 33 48

Page 77: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

5 Exam #140 Page: 5 Name:_____________________________________

140

c. (4 pts) Sort using insertion sort, building sorted array at END of array (at right, the OPPOSITE of the waywe've done it before, but still using the approach used in insertion sort.):

[0] [1] [2] [3] [4]33 29 48 17 6

         

         

         

6 17 29 33 48

d. (4 pts) Sort using selection sort, building sorted array at START of array (at left, the OPPOSITE of the waywe've done it before, but still using the approach used in selection sort.):

[0] [1] [2] [3] [4]33 29 48 17 6

         

         

         

6 17 29 33 48

Page 78: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

6Exam #140 Page: 6 Name: _____________________________________

140

4. Most of the code we write in this course goes in files that end in .cpp. >But sometimes we worked with each of thefollowing types of files. For each type, explain what its purpose is, and its relationship to .cpp files.

DON'T USE TOO MANY WORDS. Write just enough to get the main point across. Excessively verbose answersthat stray off point may be penalized.

a. (4 pts) Purpose of .h files:

b. (4 pts) .h files relationship to .cpp files:

c. (4 pts) Purpose of .o files:

d. (4 pts) .o files relationship to .cpp files.

e. (4 pts) Purpose of Makefile:

f. (4 pts) Relationship of Makefile to .cpp files:

Page 79: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

struct Node { int data; Node *next;} void printList(Node *head) { for (Node *p=head; p!=NULL; p=p->next) { cout << p->data << endl; }}

7Exam #140 Page: 7 Name: _____________________________________

140

5. At right is a fairly common definition fora C++ struct Node that can be used tomake a linked list of int values, along witha conventional implementation of afunction that prints the value of the linkedlist, one per line. As a homeworkassignment, you were asked to rewrite thefunction as a recursive function, i.e. to dothe same thing as this iterative version,but using recursion. BUT THAT'S NOTWHAT I'M ASKING YOU TO DO ONTHIS EXAM. So read carefully.

a. (10 pts) Write the definition of aC++ function calledprintListBackwards that also takes a Node *head as its parameter, and prints the list backwards.Given that the struct Node only has next pointers and no prev pointers, you might think this isimpossible, but with recursion is not only possible, it is trivially easy. (Well, if you understand recursion itis.)

HINT: If you are stuck, start by writing out the recursive version of printList which prints the listforwards using recursion. Then think about how you could tweak the function to print the list backwardsinstead.

THERE IS ONE MORE PROBLEM ON THE FINAL PAGE!

Page 80: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

8 Exam #140 Page: 8 Name:_____________________________________

140

b. (6 pts) Given that there are no prev pointers, there is no straightforward way to print the list backwardswithout iteration that doesn't involve storing some amount of temporary data that is the same size as the listitself. For example, go might go through the list in the forward direction, and either store the data from thenodes in an array which you then iterate through backwards, or in another linked list that is built in theopposite diretion.

So how is it that this is possible with recursion? What is happening "under the hood" that makes thispossible? Briefly explain.

Hint: "activation record".

End of Examtotal points=100

Page 81: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

1Exam #141 Page: 1 Name: _____________________________________

141

CS32—Midterm ExamE01, W15, Phill Conrad, UC Santa BarbaraWednesday, 04/30/2015, 9:30am­10:45am

Name: ___________________________________________________

Umail Address: ______________________________@ umail.ucsb.edu

Please write your name above AND AT THE TOP OF EVERY PAGEBe sure you turn in every page of this exam.

Each exam is numbered (e.g. Exam #137).Each pages is numbered (e.g. Page 1, Page 2, etc.)The last page clearly says "End of Exam".

This exam is closed book, closed notes, closed mouth, cell phone offYou are permitted one sheet of paper (max size 8.5x11") on which to write notesThese sheets will be collected with the exam, and might not be returnedPlease write your name on your notes sheet

Page 82: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

2Exam #141 Page: 2 Name: _____________________________________

141

1. For these questions, assume 8-bit two's complement representation of negative integers. The left-most bit is the signbit, with 1 representing negative numbers, and 0 representing positive numbers.

a. (2 pts) Given the decimal number -95,what is this number's binary representation in 8-bit two's complement?

b. (2 pts) Given the decimal number -115,what is this number's binary representation in 8-bit two's complement?

c. (2 pts) Given the decimal number -96,what is this number's binary representation in 8-bit two's complement?

d. (2 pts) Given that 11000010 is the 8-bit two's complement representation of a number,what is that number in base ten?

e. (2 pts) Given that 11111001 is the 8-bit two's complement representation of a number,what is that number in base ten?

f. (2 pts) Given that 10101000 is the 8-bit two's complement representation of a number,what is that number in base ten?

Page 83: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

3Exam #141 Page: 3 Name: _____________________________________

141

2. Suppose you have an array called a full of n integer values, indexed 0 through n-1. For simplicity, suppose there areno duplicates. You need to implement a function to return the index of a certain key value k if it occurs in the array,or -1 if it does not.

As we've discussed, two possible techniques are linear search (which our textbook calls serial search, and binarysearch.

a. (6 pts) Binary search places one additional requirement on the elements of the array. What is this additionalrequirement? It can be stated in a single sentence.

b. (6 pts) Assuming that the array a meets this additional requirement, describe how to apply the binary searchalgorithm to this problem. Be clear, precise, and concise. DO NOT WRITE CODE OR PSEUDOCODE.Instead, describe the main idea of the algorithm in plain english. Though it is not required, if you wish, youmay make reference to a, n and k in your description.

c. (6 pts) Linear search has the advantage of not having this extra requirement, and is much easier to code andimplement correctly, but has a serious drawback as compared to binary search. Explain what that is. Again, itcan be stated in a single sentence—but for full credit, you must be as precise as possible in your answer.

d. (6 pts) Assuming that the array a does not meet the requirements for binary search, describe how to apply thelinear search algorithm to this problem. Be clear, precise, and concise. DO NOT WRITE CODE ORPSEUDOCODE. Instead, describe the main idea of the algorithm in plain english. Though it is not required,if you wish, you may make reference to a, n and k in your description.

Page 84: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

4Exam #141 Page: 4 Name: _____________________________________

141

3. So far, our discussion of sorting has focused on two main sorting methods: insertion sort, and selection sort. Both ofthese can be implemented as an "in place" sort—one where the values are not copied anywhere outside the array,except to a single temporary variable.

As we've discussed, both of these sorting techniques can be implemented "in place" as successive passes, where thesorted array is built up at one end of the array or the other, in a series of n-1 steps. Our practice examples havefocussed on doing insertion sort where the sorted array is built left to right, and on selection sort, where the sortedarray is built right to left—but this is not the only possible implementation.

For each of the tables below, fill in the successive steps of the algorithm shown. The first two match what we'vedone before. The second two check whether you can adapt your understanding of how selection sort and insertionwork to a novel situation.

Grading for parts (a,b): ­1 for each incorrect entry, up to max of ­8Grading for parts (c,d): ­1 for each incorrect entry, up to max of ­4

a. (8 pts) Sort using insertion sort, building sorted array at start of array (at left, the way we've done it before):

[0] [1] [2] [3] [4]33 29 48 17 6

         

         

         

6 17 29 33 48

b. (8 pts) Sort using selection sort, building sorted array at end of array (at right, the way we've done it before.):

[0] [1] [2] [3] [4]33 29 48 17 6

         

         

         

6 17 29 33 48

Page 85: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

5 Exam #141 Page: 5 Name:_____________________________________

141

c. (4 pts) Sort using insertion sort, building sorted array at END of array (at right, the OPPOSITE of the waywe've done it before, but still using the approach used in insertion sort.):

[0] [1] [2] [3] [4]33 29 48 17 6

         

         

         

6 17 29 33 48

d. (4 pts) Sort using selection sort, building sorted array at START of array (at left, the OPPOSITE of the waywe've done it before, but still using the approach used in selection sort.):

[0] [1] [2] [3] [4]33 29 48 17 6

         

         

         

6 17 29 33 48

Page 86: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

6Exam #141 Page: 6 Name: _____________________________________

141

4. Most of the code we write in this course goes in files that end in .cpp. >But sometimes we worked with each of thefollowing types of files. For each type, explain what its purpose is, and its relationship to .cpp files.

DON'T USE TOO MANY WORDS. Write just enough to get the main point across. Excessively verbose answersthat stray off point may be penalized.

a. (4 pts) Purpose of .h files:

b. (4 pts) .h files relationship to .cpp files:

c. (4 pts) Purpose of .o files:

d. (4 pts) .o files relationship to .cpp files.

e. (4 pts) Purpose of Makefile:

f. (4 pts) Relationship of Makefile to .cpp files:

Page 87: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

struct Node { int data; Node *next;} void printList(Node *head) { for (Node *p=head; p!=NULL; p=p->next) { cout << p->data << endl; }}

7Exam #141 Page: 7 Name: _____________________________________

141

5. At right is a fairly common definition fora C++ struct Node that can be used tomake a linked list of int values, along witha conventional implementation of afunction that prints the value of the linkedlist, one per line. As a homeworkassignment, you were asked to rewrite thefunction as a recursive function, i.e. to dothe same thing as this iterative version,but using recursion. BUT THAT'S NOTWHAT I'M ASKING YOU TO DO ONTHIS EXAM. So read carefully.

a. (10 pts) Write the definition of aC++ function calledprintListBackwards that also takes a Node *head as its parameter, and prints the list backwards.Given that the struct Node only has next pointers and no prev pointers, you might think this isimpossible, but with recursion is not only possible, it is trivially easy. (Well, if you understand recursion itis.)

HINT: If you are stuck, start by writing out the recursive version of printList which prints the listforwards using recursion. Then think about how you could tweak the function to print the list backwardsinstead.

THERE IS ONE MORE PROBLEM ON THE FINAL PAGE!

Page 88: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

8 Exam #141 Page: 8 Name:_____________________________________

141

b. (6 pts) Given that there are no prev pointers, there is no straightforward way to print the list backwardswithout iteration that doesn't involve storing some amount of temporary data that is the same size as the listitself. For example, go might go through the list in the forward direction, and either store the data from thenodes in an array which you then iterate through backwards, or in another linked list that is built in theopposite diretion.

So how is it that this is possible with recursion? What is happening "under the hood" that makes thispossible? Briefly explain.

Hint: "activation record".

End of Examtotal points=100

Page 89: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

1Exam #142 Page: 1 Name: _____________________________________

142

CS32—Midterm ExamE01, W15, Phill Conrad, UC Santa BarbaraWednesday, 04/30/2015, 9:30am­10:45am

Name: ___________________________________________________

Umail Address: ______________________________@ umail.ucsb.edu

Please write your name above AND AT THE TOP OF EVERY PAGEBe sure you turn in every page of this exam.

Each exam is numbered (e.g. Exam #137).Each pages is numbered (e.g. Page 1, Page 2, etc.)The last page clearly says "End of Exam".

This exam is closed book, closed notes, closed mouth, cell phone offYou are permitted one sheet of paper (max size 8.5x11") on which to write notesThese sheets will be collected with the exam, and might not be returnedPlease write your name on your notes sheet

Page 90: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

2Exam #142 Page: 2 Name: _____________________________________

142

1. For these questions, assume 8-bit two's complement representation of negative integers. The left-most bit is the signbit, with 1 representing negative numbers, and 0 representing positive numbers.

a. (2 pts) Given the decimal number -95,what is this number's binary representation in 8-bit two's complement?

b. (2 pts) Given the decimal number -11,what is this number's binary representation in 8-bit two's complement?

c. (2 pts) Given the decimal number -30,what is this number's binary representation in 8-bit two's complement?

d. (2 pts) Given that 11110110 is the 8-bit two's complement representation of a number,what is that number in base ten?

e. (2 pts) Given that 11010100 is the 8-bit two's complement representation of a number,what is that number in base ten?

f. (2 pts) Given that 10111111 is the 8-bit two's complement representation of a number,what is that number in base ten?

Page 91: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

3Exam #142 Page: 3 Name: _____________________________________

142

2. Suppose you have an array called a full of n integer values, indexed 0 through n-1. For simplicity, suppose there areno duplicates. You need to implement a function to return the index of a certain key value k if it occurs in the array,or -1 if it does not.

As we've discussed, two possible techniques are linear search (which our textbook calls serial search, and binarysearch.

a. (6 pts) Binary search places one additional requirement on the elements of the array. What is this additionalrequirement? It can be stated in a single sentence.

b. (6 pts) Assuming that the array a meets this additional requirement, describe how to apply the binary searchalgorithm to this problem. Be clear, precise, and concise. DO NOT WRITE CODE OR PSEUDOCODE.Instead, describe the main idea of the algorithm in plain english. Though it is not required, if you wish, youmay make reference to a, n and k in your description.

c. (6 pts) Linear search has the advantage of not having this extra requirement, and is much easier to code andimplement correctly, but has a serious drawback as compared to binary search. Explain what that is. Again, itcan be stated in a single sentence—but for full credit, you must be as precise as possible in your answer.

d. (6 pts) Assuming that the array a does not meet the requirements for binary search, describe how to apply thelinear search algorithm to this problem. Be clear, precise, and concise. DO NOT WRITE CODE ORPSEUDOCODE. Instead, describe the main idea of the algorithm in plain english. Though it is not required,if you wish, you may make reference to a, n and k in your description.

Page 92: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

4Exam #142 Page: 4 Name: _____________________________________

142

3. So far, our discussion of sorting has focused on two main sorting methods: insertion sort, and selection sort. Both ofthese can be implemented as an "in place" sort—one where the values are not copied anywhere outside the array,except to a single temporary variable.

As we've discussed, both of these sorting techniques can be implemented "in place" as successive passes, where thesorted array is built up at one end of the array or the other, in a series of n-1 steps. Our practice examples havefocussed on doing insertion sort where the sorted array is built left to right, and on selection sort, where the sortedarray is built right to left—but this is not the only possible implementation.

For each of the tables below, fill in the successive steps of the algorithm shown. The first two match what we'vedone before. The second two check whether you can adapt your understanding of how selection sort and insertionwork to a novel situation.

Grading for parts (a,b): ­1 for each incorrect entry, up to max of ­8Grading for parts (c,d): ­1 for each incorrect entry, up to max of ­4

a. (8 pts) Sort using insertion sort, building sorted array at start of array (at left, the way we've done it before):

[0] [1] [2] [3] [4]33 29 48 17 6

         

         

         

6 17 29 33 48

b. (8 pts) Sort using selection sort, building sorted array at end of array (at right, the way we've done it before.):

[0] [1] [2] [3] [4]33 29 48 17 6

         

         

         

6 17 29 33 48

Page 93: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

5 Exam #142 Page: 5 Name:_____________________________________

142

c. (4 pts) Sort using insertion sort, building sorted array at END of array (at right, the OPPOSITE of the waywe've done it before, but still using the approach used in insertion sort.):

[0] [1] [2] [3] [4]33 29 48 17 6

         

         

         

6 17 29 33 48

d. (4 pts) Sort using selection sort, building sorted array at START of array (at left, the OPPOSITE of the waywe've done it before, but still using the approach used in selection sort.):

[0] [1] [2] [3] [4]33 29 48 17 6

         

         

         

6 17 29 33 48

Page 94: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

6Exam #142 Page: 6 Name: _____________________________________

142

4. Most of the code we write in this course goes in files that end in .cpp. >But sometimes we worked with each of thefollowing types of files. For each type, explain what its purpose is, and its relationship to .cpp files.

DON'T USE TOO MANY WORDS. Write just enough to get the main point across. Excessively verbose answersthat stray off point may be penalized.

a. (4 pts) Purpose of .h files:

b. (4 pts) .h files relationship to .cpp files:

c. (4 pts) Purpose of .o files:

d. (4 pts) .o files relationship to .cpp files.

e. (4 pts) Purpose of Makefile:

f. (4 pts) Relationship of Makefile to .cpp files:

Page 95: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

struct Node { int data; Node *next;} void printList(Node *head) { for (Node *p=head; p!=NULL; p=p->next) { cout << p->data << endl; }}

7Exam #142 Page: 7 Name: _____________________________________

142

5. At right is a fairly common definition fora C++ struct Node that can be used tomake a linked list of int values, along witha conventional implementation of afunction that prints the value of the linkedlist, one per line. As a homeworkassignment, you were asked to rewrite thefunction as a recursive function, i.e. to dothe same thing as this iterative version,but using recursion. BUT THAT'S NOTWHAT I'M ASKING YOU TO DO ONTHIS EXAM. So read carefully.

a. (10 pts) Write the definition of aC++ function calledprintListBackwards that also takes a Node *head as its parameter, and prints the list backwards.Given that the struct Node only has next pointers and no prev pointers, you might think this isimpossible, but with recursion is not only possible, it is trivially easy. (Well, if you understand recursion itis.)

HINT: If you are stuck, start by writing out the recursive version of printList which prints the listforwards using recursion. Then think about how you could tweak the function to print the list backwardsinstead.

THERE IS ONE MORE PROBLEM ON THE FINAL PAGE!

Page 96: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

8 Exam #142 Page: 8 Name:_____________________________________

142

b. (6 pts) Given that there are no prev pointers, there is no straightforward way to print the list backwardswithout iteration that doesn't involve storing some amount of temporary data that is the same size as the listitself. For example, go might go through the list in the forward direction, and either store the data from thenodes in an array which you then iterate through backwards, or in another linked list that is built in theopposite diretion.

So how is it that this is possible with recursion? What is happening "under the hood" that makes thispossible? Briefly explain.

Hint: "activation record".

End of Examtotal points=100

Page 97: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

1Exam #143 Page: 1 Name: _____________________________________

143

CS32—Midterm ExamE01, W15, Phill Conrad, UC Santa BarbaraWednesday, 04/30/2015, 9:30am­10:45am

Name: ___________________________________________________

Umail Address: ______________________________@ umail.ucsb.edu

Please write your name above AND AT THE TOP OF EVERY PAGEBe sure you turn in every page of this exam.

Each exam is numbered (e.g. Exam #137).Each pages is numbered (e.g. Page 1, Page 2, etc.)The last page clearly says "End of Exam".

This exam is closed book, closed notes, closed mouth, cell phone offYou are permitted one sheet of paper (max size 8.5x11") on which to write notesThese sheets will be collected with the exam, and might not be returnedPlease write your name on your notes sheet

Page 98: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

2Exam #143 Page: 2 Name: _____________________________________

143

1. For these questions, assume 8-bit two's complement representation of negative integers. The left-most bit is the signbit, with 1 representing negative numbers, and 0 representing positive numbers.

a. (2 pts) Given the decimal number -95,what is this number's binary representation in 8-bit two's complement?

b. (2 pts) Given the decimal number -46,what is this number's binary representation in 8-bit two's complement?

c. (2 pts) Given the decimal number -52,what is this number's binary representation in 8-bit two's complement?

d. (2 pts) Given that 10001111 is the 8-bit two's complement representation of a number,what is that number in base ten?

e. (2 pts) Given that 10001011 is the 8-bit two's complement representation of a number,what is that number in base ten?

f. (2 pts) Given that 11100010 is the 8-bit two's complement representation of a number,what is that number in base ten?

Page 99: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

3Exam #143 Page: 3 Name: _____________________________________

143

2. Suppose you have an array called a full of n integer values, indexed 0 through n-1. For simplicity, suppose there areno duplicates. You need to implement a function to return the index of a certain key value k if it occurs in the array,or -1 if it does not.

As we've discussed, two possible techniques are linear search (which our textbook calls serial search, and binarysearch.

a. (6 pts) Binary search places one additional requirement on the elements of the array. What is this additionalrequirement? It can be stated in a single sentence.

b. (6 pts) Assuming that the array a meets this additional requirement, describe how to apply the binary searchalgorithm to this problem. Be clear, precise, and concise. DO NOT WRITE CODE OR PSEUDOCODE.Instead, describe the main idea of the algorithm in plain english. Though it is not required, if you wish, youmay make reference to a, n and k in your description.

c. (6 pts) Linear search has the advantage of not having this extra requirement, and is much easier to code andimplement correctly, but has a serious drawback as compared to binary search. Explain what that is. Again, itcan be stated in a single sentence—but for full credit, you must be as precise as possible in your answer.

d. (6 pts) Assuming that the array a does not meet the requirements for binary search, describe how to apply thelinear search algorithm to this problem. Be clear, precise, and concise. DO NOT WRITE CODE ORPSEUDOCODE. Instead, describe the main idea of the algorithm in plain english. Though it is not required,if you wish, you may make reference to a, n and k in your description.

Page 100: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

4Exam #143 Page: 4 Name: _____________________________________

143

3. So far, our discussion of sorting has focused on two main sorting methods: insertion sort, and selection sort. Both ofthese can be implemented as an "in place" sort—one where the values are not copied anywhere outside the array,except to a single temporary variable.

As we've discussed, both of these sorting techniques can be implemented "in place" as successive passes, where thesorted array is built up at one end of the array or the other, in a series of n-1 steps. Our practice examples havefocussed on doing insertion sort where the sorted array is built left to right, and on selection sort, where the sortedarray is built right to left—but this is not the only possible implementation.

For each of the tables below, fill in the successive steps of the algorithm shown. The first two match what we'vedone before. The second two check whether you can adapt your understanding of how selection sort and insertionwork to a novel situation.

Grading for parts (a,b): ­1 for each incorrect entry, up to max of ­8Grading for parts (c,d): ­1 for each incorrect entry, up to max of ­4

a. (8 pts) Sort using insertion sort, building sorted array at start of array (at left, the way we've done it before):

[0] [1] [2] [3] [4]33 29 48 17 6

         

         

         

6 17 29 33 48

b. (8 pts) Sort using selection sort, building sorted array at end of array (at right, the way we've done it before.):

[0] [1] [2] [3] [4]33 29 48 17 6

         

         

         

6 17 29 33 48

Page 101: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

5 Exam #143 Page: 5 Name:_____________________________________

143

c. (4 pts) Sort using insertion sort, building sorted array at END of array (at right, the OPPOSITE of the waywe've done it before, but still using the approach used in insertion sort.):

[0] [1] [2] [3] [4]33 29 48 17 6

         

         

         

6 17 29 33 48

d. (4 pts) Sort using selection sort, building sorted array at START of array (at left, the OPPOSITE of the waywe've done it before, but still using the approach used in selection sort.):

[0] [1] [2] [3] [4]33 29 48 17 6

         

         

         

6 17 29 33 48

Page 102: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

6Exam #143 Page: 6 Name: _____________________________________

143

4. Most of the code we write in this course goes in files that end in .cpp. >But sometimes we worked with each of thefollowing types of files. For each type, explain what its purpose is, and its relationship to .cpp files.

DON'T USE TOO MANY WORDS. Write just enough to get the main point across. Excessively verbose answersthat stray off point may be penalized.

a. (4 pts) Purpose of .h files:

b. (4 pts) .h files relationship to .cpp files:

c. (4 pts) Purpose of .o files:

d. (4 pts) .o files relationship to .cpp files.

e. (4 pts) Purpose of Makefile:

f. (4 pts) Relationship of Makefile to .cpp files:

Page 103: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

struct Node { int data; Node *next;} void printList(Node *head) { for (Node *p=head; p!=NULL; p=p->next) { cout << p->data << endl; }}

7Exam #143 Page: 7 Name: _____________________________________

143

5. At right is a fairly common definition fora C++ struct Node that can be used tomake a linked list of int values, along witha conventional implementation of afunction that prints the value of the linkedlist, one per line. As a homeworkassignment, you were asked to rewrite thefunction as a recursive function, i.e. to dothe same thing as this iterative version,but using recursion. BUT THAT'S NOTWHAT I'M ASKING YOU TO DO ONTHIS EXAM. So read carefully.

a. (10 pts) Write the definition of aC++ function calledprintListBackwards that also takes a Node *head as its parameter, and prints the list backwards.Given that the struct Node only has next pointers and no prev pointers, you might think this isimpossible, but with recursion is not only possible, it is trivially easy. (Well, if you understand recursion itis.)

HINT: If you are stuck, start by writing out the recursive version of printList which prints the listforwards using recursion. Then think about how you could tweak the function to print the list backwardsinstead.

THERE IS ONE MORE PROBLEM ON THE FINAL PAGE!

Page 104: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

8 Exam #143 Page: 8 Name:_____________________________________

143

b. (6 pts) Given that there are no prev pointers, there is no straightforward way to print the list backwardswithout iteration that doesn't involve storing some amount of temporary data that is the same size as the listitself. For example, go might go through the list in the forward direction, and either store the data from thenodes in an array which you then iterate through backwards, or in another linked list that is built in theopposite diretion.

So how is it that this is possible with recursion? What is happening "under the hood" that makes thispossible? Briefly explain.

Hint: "activation record".

End of Examtotal points=100

Page 105: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

1Exam #144 Page: 1 Name: _____________________________________

144

CS32—Midterm ExamE01, W15, Phill Conrad, UC Santa BarbaraWednesday, 04/30/2015, 9:30am­10:45am

Name: ___________________________________________________

Umail Address: ______________________________@ umail.ucsb.edu

Please write your name above AND AT THE TOP OF EVERY PAGEBe sure you turn in every page of this exam.

Each exam is numbered (e.g. Exam #137).Each pages is numbered (e.g. Page 1, Page 2, etc.)The last page clearly says "End of Exam".

This exam is closed book, closed notes, closed mouth, cell phone offYou are permitted one sheet of paper (max size 8.5x11") on which to write notesThese sheets will be collected with the exam, and might not be returnedPlease write your name on your notes sheet

Page 106: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

2Exam #144 Page: 2 Name: _____________________________________

144

1. For these questions, assume 8-bit two's complement representation of negative integers. The left-most bit is the signbit, with 1 representing negative numbers, and 0 representing positive numbers.

a. (2 pts) Given the decimal number -96,what is this number's binary representation in 8-bit two's complement?

b. (2 pts) Given the decimal number -12,what is this number's binary representation in 8-bit two's complement?

c. (2 pts) Given the decimal number -106,what is this number's binary representation in 8-bit two's complement?

d. (2 pts) Given that 11100000 is the 8-bit two's complement representation of a number,what is that number in base ten?

e. (2 pts) Given that 10111110 is the 8-bit two's complement representation of a number,what is that number in base ten?

f. (2 pts) Given that 10110011 is the 8-bit two's complement representation of a number,what is that number in base ten?

Page 107: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

3Exam #144 Page: 3 Name: _____________________________________

144

2. Suppose you have an array called a full of n integer values, indexed 0 through n-1. For simplicity, suppose there areno duplicates. You need to implement a function to return the index of a certain key value k if it occurs in the array,or -1 if it does not.

As we've discussed, two possible techniques are linear search (which our textbook calls serial search, and binarysearch.

a. (6 pts) Binary search places one additional requirement on the elements of the array. What is this additionalrequirement? It can be stated in a single sentence.

b. (6 pts) Assuming that the array a meets this additional requirement, describe how to apply the binary searchalgorithm to this problem. Be clear, precise, and concise. DO NOT WRITE CODE OR PSEUDOCODE.Instead, describe the main idea of the algorithm in plain english. Though it is not required, if you wish, youmay make reference to a, n and k in your description.

c. (6 pts) Linear search has the advantage of not having this extra requirement, and is much easier to code andimplement correctly, but has a serious drawback as compared to binary search. Explain what that is. Again, itcan be stated in a single sentence—but for full credit, you must be as precise as possible in your answer.

d. (6 pts) Assuming that the array a does not meet the requirements for binary search, describe how to apply thelinear search algorithm to this problem. Be clear, precise, and concise. DO NOT WRITE CODE ORPSEUDOCODE. Instead, describe the main idea of the algorithm in plain english. Though it is not required,if you wish, you may make reference to a, n and k in your description.

Page 108: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

4Exam #144 Page: 4 Name: _____________________________________

144

3. So far, our discussion of sorting has focused on two main sorting methods: insertion sort, and selection sort. Both ofthese can be implemented as an "in place" sort—one where the values are not copied anywhere outside the array,except to a single temporary variable.

As we've discussed, both of these sorting techniques can be implemented "in place" as successive passes, where thesorted array is built up at one end of the array or the other, in a series of n-1 steps. Our practice examples havefocussed on doing insertion sort where the sorted array is built left to right, and on selection sort, where the sortedarray is built right to left—but this is not the only possible implementation.

For each of the tables below, fill in the successive steps of the algorithm shown. The first two match what we'vedone before. The second two check whether you can adapt your understanding of how selection sort and insertionwork to a novel situation.

Grading for parts (a,b): ­1 for each incorrect entry, up to max of ­8Grading for parts (c,d): ­1 for each incorrect entry, up to max of ­4

a. (8 pts) Sort using insertion sort, building sorted array at start of array (at left, the way we've done it before):

[0] [1] [2] [3] [4]33 29 48 17 6

         

         

         

6 17 29 33 48

b. (8 pts) Sort using selection sort, building sorted array at end of array (at right, the way we've done it before.):

[0] [1] [2] [3] [4]33 29 48 17 6

         

         

         

6 17 29 33 48

Page 109: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

5 Exam #144 Page: 5 Name:_____________________________________

144

c. (4 pts) Sort using insertion sort, building sorted array at END of array (at right, the OPPOSITE of the waywe've done it before, but still using the approach used in insertion sort.):

[0] [1] [2] [3] [4]33 29 48 17 6

         

         

         

6 17 29 33 48

d. (4 pts) Sort using selection sort, building sorted array at START of array (at left, the OPPOSITE of the waywe've done it before, but still using the approach used in selection sort.):

[0] [1] [2] [3] [4]33 29 48 17 6

         

         

         

6 17 29 33 48

Page 110: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

6Exam #144 Page: 6 Name: _____________________________________

144

4. Most of the code we write in this course goes in files that end in .cpp. >But sometimes we worked with each of thefollowing types of files. For each type, explain what its purpose is, and its relationship to .cpp files.

DON'T USE TOO MANY WORDS. Write just enough to get the main point across. Excessively verbose answersthat stray off point may be penalized.

a. (4 pts) Purpose of .h files:

b. (4 pts) .h files relationship to .cpp files:

c. (4 pts) Purpose of .o files:

d. (4 pts) .o files relationship to .cpp files.

e. (4 pts) Purpose of Makefile:

f. (4 pts) Relationship of Makefile to .cpp files:

Page 111: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

struct Node { int data; Node *next;} void printList(Node *head) { for (Node *p=head; p!=NULL; p=p->next) { cout << p->data << endl; }}

7Exam #144 Page: 7 Name: _____________________________________

144

5. At right is a fairly common definition fora C++ struct Node that can be used tomake a linked list of int values, along witha conventional implementation of afunction that prints the value of the linkedlist, one per line. As a homeworkassignment, you were asked to rewrite thefunction as a recursive function, i.e. to dothe same thing as this iterative version,but using recursion. BUT THAT'S NOTWHAT I'M ASKING YOU TO DO ONTHIS EXAM. So read carefully.

a. (10 pts) Write the definition of aC++ function calledprintListBackwards that also takes a Node *head as its parameter, and prints the list backwards.Given that the struct Node only has next pointers and no prev pointers, you might think this isimpossible, but with recursion is not only possible, it is trivially easy. (Well, if you understand recursion itis.)

HINT: If you are stuck, start by writing out the recursive version of printList which prints the listforwards using recursion. Then think about how you could tweak the function to print the list backwardsinstead.

THERE IS ONE MORE PROBLEM ON THE FINAL PAGE!

Page 112: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

8 Exam #144 Page: 8 Name:_____________________________________

144

b. (6 pts) Given that there are no prev pointers, there is no straightforward way to print the list backwardswithout iteration that doesn't involve storing some amount of temporary data that is the same size as the listitself. For example, go might go through the list in the forward direction, and either store the data from thenodes in an array which you then iterate through backwards, or in another linked list that is built in theopposite diretion.

So how is it that this is possible with recursion? What is happening "under the hood" that makes thispossible? Briefly explain.

Hint: "activation record".

End of Examtotal points=100

Page 113: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

1Exam #145 Page: 1 Name: _____________________________________

145

CS32—Midterm ExamE01, W15, Phill Conrad, UC Santa BarbaraWednesday, 04/30/2015, 9:30am­10:45am

Name: ___________________________________________________

Umail Address: ______________________________@ umail.ucsb.edu

Please write your name above AND AT THE TOP OF EVERY PAGEBe sure you turn in every page of this exam.

Each exam is numbered (e.g. Exam #137).Each pages is numbered (e.g. Page 1, Page 2, etc.)The last page clearly says "End of Exam".

This exam is closed book, closed notes, closed mouth, cell phone offYou are permitted one sheet of paper (max size 8.5x11") on which to write notesThese sheets will be collected with the exam, and might not be returnedPlease write your name on your notes sheet

Page 114: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

2Exam #145 Page: 2 Name: _____________________________________

145

1. For these questions, assume 8-bit two's complement representation of negative integers. The left-most bit is the signbit, with 1 representing negative numbers, and 0 representing positive numbers.

a. (2 pts) Given the decimal number -96,what is this number's binary representation in 8-bit two's complement?

b. (2 pts) Given the decimal number -47,what is this number's binary representation in 8-bit two's complement?

c. (2 pts) Given the decimal number -128,what is this number's binary representation in 8-bit two's complement?

d. (2 pts) Given that 11111001 is the 8-bit two's complement representation of a number,what is that number in base ten?

e. (2 pts) Given that 11110101 is the 8-bit two's complement representation of a number,what is that number in base ten?

f. (2 pts) Given that 11010110 is the 8-bit two's complement representation of a number,what is that number in base ten?

Page 115: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

3Exam #145 Page: 3 Name: _____________________________________

145

2. Suppose you have an array called a full of n integer values, indexed 0 through n-1. For simplicity, suppose there areno duplicates. You need to implement a function to return the index of a certain key value k if it occurs in the array,or -1 if it does not.

As we've discussed, two possible techniques are linear search (which our textbook calls serial search, and binarysearch.

a. (6 pts) Binary search places one additional requirement on the elements of the array. What is this additionalrequirement? It can be stated in a single sentence.

b. (6 pts) Assuming that the array a meets this additional requirement, describe how to apply the binary searchalgorithm to this problem. Be clear, precise, and concise. DO NOT WRITE CODE OR PSEUDOCODE.Instead, describe the main idea of the algorithm in plain english. Though it is not required, if you wish, youmay make reference to a, n and k in your description.

c. (6 pts) Linear search has the advantage of not having this extra requirement, and is much easier to code andimplement correctly, but has a serious drawback as compared to binary search. Explain what that is. Again, itcan be stated in a single sentence—but for full credit, you must be as precise as possible in your answer.

d. (6 pts) Assuming that the array a does not meet the requirements for binary search, describe how to apply thelinear search algorithm to this problem. Be clear, precise, and concise. DO NOT WRITE CODE ORPSEUDOCODE. Instead, describe the main idea of the algorithm in plain english. Though it is not required,if you wish, you may make reference to a, n and k in your description.

Page 116: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

4Exam #145 Page: 4 Name: _____________________________________

145

3. So far, our discussion of sorting has focused on two main sorting methods: insertion sort, and selection sort. Both ofthese can be implemented as an "in place" sort—one where the values are not copied anywhere outside the array,except to a single temporary variable.

As we've discussed, both of these sorting techniques can be implemented "in place" as successive passes, where thesorted array is built up at one end of the array or the other, in a series of n-1 steps. Our practice examples havefocussed on doing insertion sort where the sorted array is built left to right, and on selection sort, where the sortedarray is built right to left—but this is not the only possible implementation.

For each of the tables below, fill in the successive steps of the algorithm shown. The first two match what we'vedone before. The second two check whether you can adapt your understanding of how selection sort and insertionwork to a novel situation.

Grading for parts (a,b): ­1 for each incorrect entry, up to max of ­8Grading for parts (c,d): ­1 for each incorrect entry, up to max of ­4

a. (8 pts) Sort using insertion sort, building sorted array at start of array (at left, the way we've done it before):

[0] [1] [2] [3] [4]33 29 48 17 6

         

         

         

6 17 29 33 48

b. (8 pts) Sort using selection sort, building sorted array at end of array (at right, the way we've done it before.):

[0] [1] [2] [3] [4]33 29 48 17 6

         

         

         

6 17 29 33 48

Page 117: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

5 Exam #145 Page: 5 Name:_____________________________________

145

c. (4 pts) Sort using insertion sort, building sorted array at END of array (at right, the OPPOSITE of the waywe've done it before, but still using the approach used in insertion sort.):

[0] [1] [2] [3] [4]33 29 48 17 6

         

         

         

6 17 29 33 48

d. (4 pts) Sort using selection sort, building sorted array at START of array (at left, the OPPOSITE of the waywe've done it before, but still using the approach used in selection sort.):

[0] [1] [2] [3] [4]33 29 48 17 6

         

         

         

6 17 29 33 48

Page 118: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

6Exam #145 Page: 6 Name: _____________________________________

145

4. Most of the code we write in this course goes in files that end in .cpp. >But sometimes we worked with each of thefollowing types of files. For each type, explain what its purpose is, and its relationship to .cpp files.

DON'T USE TOO MANY WORDS. Write just enough to get the main point across. Excessively verbose answersthat stray off point may be penalized.

a. (4 pts) Purpose of .h files:

b. (4 pts) .h files relationship to .cpp files:

c. (4 pts) Purpose of .o files:

d. (4 pts) .o files relationship to .cpp files.

e. (4 pts) Purpose of Makefile:

f. (4 pts) Relationship of Makefile to .cpp files:

Page 119: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

struct Node { int data; Node *next;} void printList(Node *head) { for (Node *p=head; p!=NULL; p=p->next) { cout << p->data << endl; }}

7Exam #145 Page: 7 Name: _____________________________________

145

5. At right is a fairly common definition fora C++ struct Node that can be used tomake a linked list of int values, along witha conventional implementation of afunction that prints the value of the linkedlist, one per line. As a homeworkassignment, you were asked to rewrite thefunction as a recursive function, i.e. to dothe same thing as this iterative version,but using recursion. BUT THAT'S NOTWHAT I'M ASKING YOU TO DO ONTHIS EXAM. So read carefully.

a. (10 pts) Write the definition of aC++ function calledprintListBackwards that also takes a Node *head as its parameter, and prints the list backwards.Given that the struct Node only has next pointers and no prev pointers, you might think this isimpossible, but with recursion is not only possible, it is trivially easy. (Well, if you understand recursion itis.)

HINT: If you are stuck, start by writing out the recursive version of printList which prints the listforwards using recursion. Then think about how you could tweak the function to print the list backwardsinstead.

THERE IS ONE MORE PROBLEM ON THE FINAL PAGE!

Page 120: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

8 Exam #145 Page: 8 Name:_____________________________________

145

b. (6 pts) Given that there are no prev pointers, there is no straightforward way to print the list backwardswithout iteration that doesn't involve storing some amount of temporary data that is the same size as the listitself. For example, go might go through the list in the forward direction, and either store the data from thenodes in an array which you then iterate through backwards, or in another linked list that is built in theopposite diretion.

So how is it that this is possible with recursion? What is happening "under the hood" that makes thispossible? Briefly explain.

Hint: "activation record".

End of Examtotal points=100

Page 121: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

1Exam #146 Page: 1 Name: _____________________________________

146

CS32—Midterm ExamE01, W15, Phill Conrad, UC Santa BarbaraWednesday, 04/30/2015, 9:30am­10:45am

Name: ___________________________________________________

Umail Address: ______________________________@ umail.ucsb.edu

Please write your name above AND AT THE TOP OF EVERY PAGEBe sure you turn in every page of this exam.

Each exam is numbered (e.g. Exam #137).Each pages is numbered (e.g. Page 1, Page 2, etc.)The last page clearly says "End of Exam".

This exam is closed book, closed notes, closed mouth, cell phone offYou are permitted one sheet of paper (max size 8.5x11") on which to write notesThese sheets will be collected with the exam, and might not be returnedPlease write your name on your notes sheet

Page 122: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

2Exam #146 Page: 2 Name: _____________________________________

146

1. For these questions, assume 8-bit two's complement representation of negative integers. The left-most bit is the signbit, with 1 representing negative numbers, and 0 representing positive numbers.

a. (2 pts) Given the decimal number -96,what is this number's binary representation in 8-bit two's complement?

b. (2 pts) Given the decimal number -71,what is this number's binary representation in 8-bit two's complement?

c. (2 pts) Given the decimal number -63,what is this number's binary representation in 8-bit two's complement?

d. (2 pts) Given that 10101101 is the 8-bit two's complement representation of a number,what is that number in base ten?

e. (2 pts) Given that 11010000 is the 8-bit two's complement representation of a number,what is that number in base ten?

f. (2 pts) Given that 11101110 is the 8-bit two's complement representation of a number,what is that number in base ten?

Page 123: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

3Exam #146 Page: 3 Name: _____________________________________

146

2. Suppose you have an array called a full of n integer values, indexed 0 through n-1. For simplicity, suppose there areno duplicates. You need to implement a function to return the index of a certain key value k if it occurs in the array,or -1 if it does not.

As we've discussed, two possible techniques are linear search (which our textbook calls serial search, and binarysearch.

a. (6 pts) Binary search places one additional requirement on the elements of the array. What is this additionalrequirement? It can be stated in a single sentence.

b. (6 pts) Assuming that the array a meets this additional requirement, describe how to apply the binary searchalgorithm to this problem. Be clear, precise, and concise. DO NOT WRITE CODE OR PSEUDOCODE.Instead, describe the main idea of the algorithm in plain english. Though it is not required, if you wish, youmay make reference to a, n and k in your description.

c. (6 pts) Linear search has the advantage of not having this extra requirement, and is much easier to code andimplement correctly, but has a serious drawback as compared to binary search. Explain what that is. Again, itcan be stated in a single sentence—but for full credit, you must be as precise as possible in your answer.

d. (6 pts) Assuming that the array a does not meet the requirements for binary search, describe how to apply thelinear search algorithm to this problem. Be clear, precise, and concise. DO NOT WRITE CODE ORPSEUDOCODE. Instead, describe the main idea of the algorithm in plain english. Though it is not required,if you wish, you may make reference to a, n and k in your description.

Page 124: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

4Exam #146 Page: 4 Name: _____________________________________

146

3. So far, our discussion of sorting has focused on two main sorting methods: insertion sort, and selection sort. Both ofthese can be implemented as an "in place" sort—one where the values are not copied anywhere outside the array,except to a single temporary variable.

As we've discussed, both of these sorting techniques can be implemented "in place" as successive passes, where thesorted array is built up at one end of the array or the other, in a series of n-1 steps. Our practice examples havefocussed on doing insertion sort where the sorted array is built left to right, and on selection sort, where the sortedarray is built right to left—but this is not the only possible implementation.

For each of the tables below, fill in the successive steps of the algorithm shown. The first two match what we'vedone before. The second two check whether you can adapt your understanding of how selection sort and insertionwork to a novel situation.

Grading for parts (a,b): ­1 for each incorrect entry, up to max of ­8Grading for parts (c,d): ­1 for each incorrect entry, up to max of ­4

a. (8 pts) Sort using insertion sort, building sorted array at start of array (at left, the way we've done it before):

[0] [1] [2] [3] [4]33 29 48 17 6

         

         

         

6 17 29 33 48

b. (8 pts) Sort using selection sort, building sorted array at end of array (at right, the way we've done it before.):

[0] [1] [2] [3] [4]33 29 48 17 6

         

         

         

6 17 29 33 48

Page 125: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

5 Exam #146 Page: 5 Name:_____________________________________

146

c. (4 pts) Sort using insertion sort, building sorted array at END of array (at right, the OPPOSITE of the waywe've done it before, but still using the approach used in insertion sort.):

[0] [1] [2] [3] [4]33 29 48 17 6

         

         

         

6 17 29 33 48

d. (4 pts) Sort using selection sort, building sorted array at START of array (at left, the OPPOSITE of the waywe've done it before, but still using the approach used in selection sort.):

[0] [1] [2] [3] [4]33 29 48 17 6

         

         

         

6 17 29 33 48

Page 126: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

6Exam #146 Page: 6 Name: _____________________________________

146

4. Most of the code we write in this course goes in files that end in .cpp. >But sometimes we worked with each of thefollowing types of files. For each type, explain what its purpose is, and its relationship to .cpp files.

DON'T USE TOO MANY WORDS. Write just enough to get the main point across. Excessively verbose answersthat stray off point may be penalized.

a. (4 pts) Purpose of .h files:

b. (4 pts) .h files relationship to .cpp files:

c. (4 pts) Purpose of .o files:

d. (4 pts) .o files relationship to .cpp files.

e. (4 pts) Purpose of Makefile:

f. (4 pts) Relationship of Makefile to .cpp files:

Page 127: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

struct Node { int data; Node *next;} void printList(Node *head) { for (Node *p=head; p!=NULL; p=p->next) { cout << p->data << endl; }}

7Exam #146 Page: 7 Name: _____________________________________

146

5. At right is a fairly common definition fora C++ struct Node that can be used tomake a linked list of int values, along witha conventional implementation of afunction that prints the value of the linkedlist, one per line. As a homeworkassignment, you were asked to rewrite thefunction as a recursive function, i.e. to dothe same thing as this iterative version,but using recursion. BUT THAT'S NOTWHAT I'M ASKING YOU TO DO ONTHIS EXAM. So read carefully.

a. (10 pts) Write the definition of aC++ function calledprintListBackwards that also takes a Node *head as its parameter, and prints the list backwards.Given that the struct Node only has next pointers and no prev pointers, you might think this isimpossible, but with recursion is not only possible, it is trivially easy. (Well, if you understand recursion itis.)

HINT: If you are stuck, start by writing out the recursive version of printList which prints the listforwards using recursion. Then think about how you could tweak the function to print the list backwardsinstead.

THERE IS ONE MORE PROBLEM ON THE FINAL PAGE!

Page 128: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

8 Exam #146 Page: 8 Name:_____________________________________

146

b. (6 pts) Given that there are no prev pointers, there is no straightforward way to print the list backwardswithout iteration that doesn't involve storing some amount of temporary data that is the same size as the listitself. For example, go might go through the list in the forward direction, and either store the data from thenodes in an array which you then iterate through backwards, or in another linked list that is built in theopposite diretion.

So how is it that this is possible with recursion? What is happening "under the hood" that makes thispossible? Briefly explain.

Hint: "activation record".

End of Examtotal points=100

Page 129: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

1Exam #147 Page: 1 Name: _____________________________________

147

CS32—Midterm ExamE01, W15, Phill Conrad, UC Santa BarbaraWednesday, 04/30/2015, 9:30am­10:45am

Name: ___________________________________________________

Umail Address: ______________________________@ umail.ucsb.edu

Please write your name above AND AT THE TOP OF EVERY PAGEBe sure you turn in every page of this exam.

Each exam is numbered (e.g. Exam #137).Each pages is numbered (e.g. Page 1, Page 2, etc.)The last page clearly says "End of Exam".

This exam is closed book, closed notes, closed mouth, cell phone offYou are permitted one sheet of paper (max size 8.5x11") on which to write notesThese sheets will be collected with the exam, and might not be returnedPlease write your name on your notes sheet

Page 130: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

2Exam #147 Page: 2 Name: _____________________________________

147

1. For these questions, assume 8-bit two's complement representation of negative integers. The left-most bit is the signbit, with 1 representing negative numbers, and 0 representing positive numbers.

a. (2 pts) Given the decimal number -96,what is this number's binary representation in 8-bit two's complement?

b. (2 pts) Given the decimal number -106,what is this number's binary representation in 8-bit two's complement?

c. (2 pts) Given the decimal number -85,what is this number's binary representation in 8-bit two's complement?

d. (2 pts) Given that 11000110 is the 8-bit two's complement representation of a number,what is that number in base ten?

e. (2 pts) Given that 10000111 is the 8-bit two's complement representation of a number,what is that number in base ten?

f. (2 pts) Given that 10010000 is the 8-bit two's complement representation of a number,what is that number in base ten?

Page 131: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

3Exam #147 Page: 3 Name: _____________________________________

147

2. Suppose you have an array called a full of n integer values, indexed 0 through n-1. For simplicity, suppose there areno duplicates. You need to implement a function to return the index of a certain key value k if it occurs in the array,or -1 if it does not.

As we've discussed, two possible techniques are linear search (which our textbook calls serial search, and binarysearch.

a. (6 pts) Binary search places one additional requirement on the elements of the array. What is this additionalrequirement? It can be stated in a single sentence.

b. (6 pts) Assuming that the array a meets this additional requirement, describe how to apply the binary searchalgorithm to this problem. Be clear, precise, and concise. DO NOT WRITE CODE OR PSEUDOCODE.Instead, describe the main idea of the algorithm in plain english. Though it is not required, if you wish, youmay make reference to a, n and k in your description.

c. (6 pts) Linear search has the advantage of not having this extra requirement, and is much easier to code andimplement correctly, but has a serious drawback as compared to binary search. Explain what that is. Again, itcan be stated in a single sentence—but for full credit, you must be as precise as possible in your answer.

d. (6 pts) Assuming that the array a does not meet the requirements for binary search, describe how to apply thelinear search algorithm to this problem. Be clear, precise, and concise. DO NOT WRITE CODE ORPSEUDOCODE. Instead, describe the main idea of the algorithm in plain english. Though it is not required,if you wish, you may make reference to a, n and k in your description.

Page 132: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

4Exam #147 Page: 4 Name: _____________________________________

147

3. So far, our discussion of sorting has focused on two main sorting methods: insertion sort, and selection sort. Both ofthese can be implemented as an "in place" sort—one where the values are not copied anywhere outside the array,except to a single temporary variable.

As we've discussed, both of these sorting techniques can be implemented "in place" as successive passes, where thesorted array is built up at one end of the array or the other, in a series of n-1 steps. Our practice examples havefocussed on doing insertion sort where the sorted array is built left to right, and on selection sort, where the sortedarray is built right to left—but this is not the only possible implementation.

For each of the tables below, fill in the successive steps of the algorithm shown. The first two match what we'vedone before. The second two check whether you can adapt your understanding of how selection sort and insertionwork to a novel situation.

Grading for parts (a,b): ­1 for each incorrect entry, up to max of ­8Grading for parts (c,d): ­1 for each incorrect entry, up to max of ­4

a. (8 pts) Sort using insertion sort, building sorted array at start of array (at left, the way we've done it before):

[0] [1] [2] [3] [4]33 29 48 17 6

         

         

         

6 17 29 33 48

b. (8 pts) Sort using selection sort, building sorted array at end of array (at right, the way we've done it before.):

[0] [1] [2] [3] [4]33 29 48 17 6

         

         

         

6 17 29 33 48

Page 133: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

5 Exam #147 Page: 5 Name:_____________________________________

147

c. (4 pts) Sort using insertion sort, building sorted array at END of array (at right, the OPPOSITE of the waywe've done it before, but still using the approach used in insertion sort.):

[0] [1] [2] [3] [4]33 29 48 17 6

         

         

         

6 17 29 33 48

d. (4 pts) Sort using selection sort, building sorted array at START of array (at left, the OPPOSITE of the waywe've done it before, but still using the approach used in selection sort.):

[0] [1] [2] [3] [4]33 29 48 17 6

         

         

         

6 17 29 33 48

Page 134: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

6Exam #147 Page: 6 Name: _____________________________________

147

4. Most of the code we write in this course goes in files that end in .cpp. >But sometimes we worked with each of thefollowing types of files. For each type, explain what its purpose is, and its relationship to .cpp files.

DON'T USE TOO MANY WORDS. Write just enough to get the main point across. Excessively verbose answersthat stray off point may be penalized.

a. (4 pts) Purpose of .h files:

b. (4 pts) .h files relationship to .cpp files:

c. (4 pts) Purpose of .o files:

d. (4 pts) .o files relationship to .cpp files.

e. (4 pts) Purpose of Makefile:

f. (4 pts) Relationship of Makefile to .cpp files:

Page 135: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

struct Node { int data; Node *next;} void printList(Node *head) { for (Node *p=head; p!=NULL; p=p->next) { cout << p->data << endl; }}

7Exam #147 Page: 7 Name: _____________________________________

147

5. At right is a fairly common definition fora C++ struct Node that can be used tomake a linked list of int values, along witha conventional implementation of afunction that prints the value of the linkedlist, one per line. As a homeworkassignment, you were asked to rewrite thefunction as a recursive function, i.e. to dothe same thing as this iterative version,but using recursion. BUT THAT'S NOTWHAT I'M ASKING YOU TO DO ONTHIS EXAM. So read carefully.

a. (10 pts) Write the definition of aC++ function calledprintListBackwards that also takes a Node *head as its parameter, and prints the list backwards.Given that the struct Node only has next pointers and no prev pointers, you might think this isimpossible, but with recursion is not only possible, it is trivially easy. (Well, if you understand recursion itis.)

HINT: If you are stuck, start by writing out the recursive version of printList which prints the listforwards using recursion. Then think about how you could tweak the function to print the list backwardsinstead.

THERE IS ONE MORE PROBLEM ON THE FINAL PAGE!

Page 136: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

8 Exam #147 Page: 8 Name:_____________________________________

147

b. (6 pts) Given that there are no prev pointers, there is no straightforward way to print the list backwardswithout iteration that doesn't involve storing some amount of temporary data that is the same size as the listitself. For example, go might go through the list in the forward direction, and either store the data from thenodes in an array which you then iterate through backwards, or in another linked list that is built in theopposite diretion.

So how is it that this is possible with recursion? What is happening "under the hood" that makes thispossible? Briefly explain.

Hint: "activation record".

End of Examtotal points=100

Page 137: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

1Exam #148 Page: 1 Name: _____________________________________

148

CS32—Midterm ExamE01, W15, Phill Conrad, UC Santa BarbaraWednesday, 04/30/2015, 9:30am­10:45am

Name: ___________________________________________________

Umail Address: ______________________________@ umail.ucsb.edu

Please write your name above AND AT THE TOP OF EVERY PAGEBe sure you turn in every page of this exam.

Each exam is numbered (e.g. Exam #137).Each pages is numbered (e.g. Page 1, Page 2, etc.)The last page clearly says "End of Exam".

This exam is closed book, closed notes, closed mouth, cell phone offYou are permitted one sheet of paper (max size 8.5x11") on which to write notesThese sheets will be collected with the exam, and might not be returnedPlease write your name on your notes sheet

Page 138: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

2Exam #148 Page: 2 Name: _____________________________________

148

1. For these questions, assume 8-bit two's complement representation of negative integers. The left-most bit is the signbit, with 1 representing negative numbers, and 0 representing positive numbers.

a. (2 pts) Given the decimal number -96,what is this number's binary representation in 8-bit two's complement?

b. (2 pts) Given the decimal number -22,what is this number's binary representation in 8-bit two's complement?

c. (2 pts) Given the decimal number -65,what is this number's binary representation in 8-bit two's complement?

d. (2 pts) Given that 11000110 is the 8-bit two's complement representation of a number,what is that number in base ten?

e. (2 pts) Given that 10011010 is the 8-bit two's complement representation of a number,what is that number in base ten?

f. (2 pts) Given that 11111100 is the 8-bit two's complement representation of a number,what is that number in base ten?

Page 139: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

3Exam #148 Page: 3 Name: _____________________________________

148

2. Suppose you have an array called a full of n integer values, indexed 0 through n-1. For simplicity, suppose there areno duplicates. You need to implement a function to return the index of a certain key value k if it occurs in the array,or -1 if it does not.

As we've discussed, two possible techniques are linear search (which our textbook calls serial search, and binarysearch.

a. (6 pts) Binary search places one additional requirement on the elements of the array. What is this additionalrequirement? It can be stated in a single sentence.

b. (6 pts) Assuming that the array a meets this additional requirement, describe how to apply the binary searchalgorithm to this problem. Be clear, precise, and concise. DO NOT WRITE CODE OR PSEUDOCODE.Instead, describe the main idea of the algorithm in plain english. Though it is not required, if you wish, youmay make reference to a, n and k in your description.

c. (6 pts) Linear search has the advantage of not having this extra requirement, and is much easier to code andimplement correctly, but has a serious drawback as compared to binary search. Explain what that is. Again, itcan be stated in a single sentence—but for full credit, you must be as precise as possible in your answer.

d. (6 pts) Assuming that the array a does not meet the requirements for binary search, describe how to apply thelinear search algorithm to this problem. Be clear, precise, and concise. DO NOT WRITE CODE ORPSEUDOCODE. Instead, describe the main idea of the algorithm in plain english. Though it is not required,if you wish, you may make reference to a, n and k in your description.

Page 140: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

4Exam #148 Page: 4 Name: _____________________________________

148

3. So far, our discussion of sorting has focused on two main sorting methods: insertion sort, and selection sort. Both ofthese can be implemented as an "in place" sort—one where the values are not copied anywhere outside the array,except to a single temporary variable.

As we've discussed, both of these sorting techniques can be implemented "in place" as successive passes, where thesorted array is built up at one end of the array or the other, in a series of n-1 steps. Our practice examples havefocussed on doing insertion sort where the sorted array is built left to right, and on selection sort, where the sortedarray is built right to left—but this is not the only possible implementation.

For each of the tables below, fill in the successive steps of the algorithm shown. The first two match what we'vedone before. The second two check whether you can adapt your understanding of how selection sort and insertionwork to a novel situation.

Grading for parts (a,b): ­1 for each incorrect entry, up to max of ­8Grading for parts (c,d): ­1 for each incorrect entry, up to max of ­4

a. (8 pts) Sort using insertion sort, building sorted array at start of array (at left, the way we've done it before):

[0] [1] [2] [3] [4]33 29 48 17 6

         

         

         

6 17 29 33 48

b. (8 pts) Sort using selection sort, building sorted array at end of array (at right, the way we've done it before.):

[0] [1] [2] [3] [4]33 29 48 17 6

         

         

         

6 17 29 33 48

Page 141: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

5 Exam #148 Page: 5 Name:_____________________________________

148

c. (4 pts) Sort using insertion sort, building sorted array at END of array (at right, the OPPOSITE of the waywe've done it before, but still using the approach used in insertion sort.):

[0] [1] [2] [3] [4]33 29 48 17 6

         

         

         

6 17 29 33 48

d. (4 pts) Sort using selection sort, building sorted array at START of array (at left, the OPPOSITE of the waywe've done it before, but still using the approach used in selection sort.):

[0] [1] [2] [3] [4]33 29 48 17 6

         

         

         

6 17 29 33 48

Page 142: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

6Exam #148 Page: 6 Name: _____________________________________

148

4. Most of the code we write in this course goes in files that end in .cpp. >But sometimes we worked with each of thefollowing types of files. For each type, explain what its purpose is, and its relationship to .cpp files.

DON'T USE TOO MANY WORDS. Write just enough to get the main point across. Excessively verbose answersthat stray off point may be penalized.

a. (4 pts) Purpose of .h files:

b. (4 pts) .h files relationship to .cpp files:

c. (4 pts) Purpose of .o files:

d. (4 pts) .o files relationship to .cpp files.

e. (4 pts) Purpose of Makefile:

f. (4 pts) Relationship of Makefile to .cpp files:

Page 143: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

struct Node { int data; Node *next;} void printList(Node *head) { for (Node *p=head; p!=NULL; p=p->next) { cout << p->data << endl; }}

7Exam #148 Page: 7 Name: _____________________________________

148

5. At right is a fairly common definition fora C++ struct Node that can be used tomake a linked list of int values, along witha conventional implementation of afunction that prints the value of the linkedlist, one per line. As a homeworkassignment, you were asked to rewrite thefunction as a recursive function, i.e. to dothe same thing as this iterative version,but using recursion. BUT THAT'S NOTWHAT I'M ASKING YOU TO DO ONTHIS EXAM. So read carefully.

a. (10 pts) Write the definition of aC++ function calledprintListBackwards that also takes a Node *head as its parameter, and prints the list backwards.Given that the struct Node only has next pointers and no prev pointers, you might think this isimpossible, but with recursion is not only possible, it is trivially easy. (Well, if you understand recursion itis.)

HINT: If you are stuck, start by writing out the recursive version of printList which prints the listforwards using recursion. Then think about how you could tweak the function to print the list backwardsinstead.

THERE IS ONE MORE PROBLEM ON THE FINAL PAGE!

Page 144: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

8 Exam #148 Page: 8 Name:_____________________________________

148

b. (6 pts) Given that there are no prev pointers, there is no straightforward way to print the list backwardswithout iteration that doesn't involve storing some amount of temporary data that is the same size as the listitself. For example, go might go through the list in the forward direction, and either store the data from thenodes in an array which you then iterate through backwards, or in another linked list that is built in theopposite diretion.

So how is it that this is possible with recursion? What is happening "under the hood" that makes thispossible? Briefly explain.

Hint: "activation record".

End of Examtotal points=100

Page 145: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

1Exam #149 Page: 1 Name: _____________________________________

149

CS32—Midterm ExamE01, W15, Phill Conrad, UC Santa BarbaraWednesday, 04/30/2015, 9:30am­10:45am

Name: ___________________________________________________

Umail Address: ______________________________@ umail.ucsb.edu

Please write your name above AND AT THE TOP OF EVERY PAGEBe sure you turn in every page of this exam.

Each exam is numbered (e.g. Exam #137).Each pages is numbered (e.g. Page 1, Page 2, etc.)The last page clearly says "End of Exam".

This exam is closed book, closed notes, closed mouth, cell phone offYou are permitted one sheet of paper (max size 8.5x11") on which to write notesThese sheets will be collected with the exam, and might not be returnedPlease write your name on your notes sheet

Page 146: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

2Exam #149 Page: 2 Name: _____________________________________

149

1. For these questions, assume 8-bit two's complement representation of negative integers. The left-most bit is the signbit, with 1 representing negative numbers, and 0 representing positive numbers.

a. (2 pts) Given the decimal number -96,what is this number's binary representation in 8-bit two's complement?

b. (2 pts) Given the decimal number -56,what is this number's binary representation in 8-bit two's complement?

c. (2 pts) Given the decimal number -87,what is this number's binary representation in 8-bit two's complement?

d. (2 pts) Given that 11011111 is the 8-bit two's complement representation of a number,what is that number in base ten?

e. (2 pts) Given that 11010001 is the 8-bit two's complement representation of a number,what is that number in base ten?

f. (2 pts) Given that 11100010 is the 8-bit two's complement representation of a number,what is that number in base ten?

Page 147: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

3Exam #149 Page: 3 Name: _____________________________________

149

2. Suppose you have an array called a full of n integer values, indexed 0 through n-1. For simplicity, suppose there areno duplicates. You need to implement a function to return the index of a certain key value k if it occurs in the array,or -1 if it does not.

As we've discussed, two possible techniques are linear search (which our textbook calls serial search, and binarysearch.

a. (6 pts) Binary search places one additional requirement on the elements of the array. What is this additionalrequirement? It can be stated in a single sentence.

b. (6 pts) Assuming that the array a meets this additional requirement, describe how to apply the binary searchalgorithm to this problem. Be clear, precise, and concise. DO NOT WRITE CODE OR PSEUDOCODE.Instead, describe the main idea of the algorithm in plain english. Though it is not required, if you wish, youmay make reference to a, n and k in your description.

c. (6 pts) Linear search has the advantage of not having this extra requirement, and is much easier to code andimplement correctly, but has a serious drawback as compared to binary search. Explain what that is. Again, itcan be stated in a single sentence—but for full credit, you must be as precise as possible in your answer.

d. (6 pts) Assuming that the array a does not meet the requirements for binary search, describe how to apply thelinear search algorithm to this problem. Be clear, precise, and concise. DO NOT WRITE CODE ORPSEUDOCODE. Instead, describe the main idea of the algorithm in plain english. Though it is not required,if you wish, you may make reference to a, n and k in your description.

Page 148: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

4Exam #149 Page: 4 Name: _____________________________________

149

3. So far, our discussion of sorting has focused on two main sorting methods: insertion sort, and selection sort. Both ofthese can be implemented as an "in place" sort—one where the values are not copied anywhere outside the array,except to a single temporary variable.

As we've discussed, both of these sorting techniques can be implemented "in place" as successive passes, where thesorted array is built up at one end of the array or the other, in a series of n-1 steps. Our practice examples havefocussed on doing insertion sort where the sorted array is built left to right, and on selection sort, where the sortedarray is built right to left—but this is not the only possible implementation.

For each of the tables below, fill in the successive steps of the algorithm shown. The first two match what we'vedone before. The second two check whether you can adapt your understanding of how selection sort and insertionwork to a novel situation.

Grading for parts (a,b): ­1 for each incorrect entry, up to max of ­8Grading for parts (c,d): ­1 for each incorrect entry, up to max of ­4

a. (8 pts) Sort using insertion sort, building sorted array at start of array (at left, the way we've done it before):

[0] [1] [2] [3] [4]33 29 48 17 6

         

         

         

6 17 29 33 48

b. (8 pts) Sort using selection sort, building sorted array at end of array (at right, the way we've done it before.):

[0] [1] [2] [3] [4]33 29 48 17 6

         

         

         

6 17 29 33 48

Page 149: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

5 Exam #149 Page: 5 Name:_____________________________________

149

c. (4 pts) Sort using insertion sort, building sorted array at END of array (at right, the OPPOSITE of the waywe've done it before, but still using the approach used in insertion sort.):

[0] [1] [2] [3] [4]33 29 48 17 6

         

         

         

6 17 29 33 48

d. (4 pts) Sort using selection sort, building sorted array at START of array (at left, the OPPOSITE of the waywe've done it before, but still using the approach used in selection sort.):

[0] [1] [2] [3] [4]33 29 48 17 6

         

         

         

6 17 29 33 48

Page 150: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

6Exam #149 Page: 6 Name: _____________________________________

149

4. Most of the code we write in this course goes in files that end in .cpp. >But sometimes we worked with each of thefollowing types of files. For each type, explain what its purpose is, and its relationship to .cpp files.

DON'T USE TOO MANY WORDS. Write just enough to get the main point across. Excessively verbose answersthat stray off point may be penalized.

a. (4 pts) Purpose of .h files:

b. (4 pts) .h files relationship to .cpp files:

c. (4 pts) Purpose of .o files:

d. (4 pts) .o files relationship to .cpp files.

e. (4 pts) Purpose of Makefile:

f. (4 pts) Relationship of Makefile to .cpp files:

Page 151: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

struct Node { int data; Node *next;} void printList(Node *head) { for (Node *p=head; p!=NULL; p=p->next) { cout << p->data << endl; }}

7Exam #149 Page: 7 Name: _____________________________________

149

5. At right is a fairly common definition fora C++ struct Node that can be used tomake a linked list of int values, along witha conventional implementation of afunction that prints the value of the linkedlist, one per line. As a homeworkassignment, you were asked to rewrite thefunction as a recursive function, i.e. to dothe same thing as this iterative version,but using recursion. BUT THAT'S NOTWHAT I'M ASKING YOU TO DO ONTHIS EXAM. So read carefully.

a. (10 pts) Write the definition of aC++ function calledprintListBackwards that also takes a Node *head as its parameter, and prints the list backwards.Given that the struct Node only has next pointers and no prev pointers, you might think this isimpossible, but with recursion is not only possible, it is trivially easy. (Well, if you understand recursion itis.)

HINT: If you are stuck, start by writing out the recursive version of printList which prints the listforwards using recursion. Then think about how you could tweak the function to print the list backwardsinstead.

THERE IS ONE MORE PROBLEM ON THE FINAL PAGE!

Page 152: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

8 Exam #149 Page: 8 Name:_____________________________________

149

b. (6 pts) Given that there are no prev pointers, there is no straightforward way to print the list backwardswithout iteration that doesn't involve storing some amount of temporary data that is the same size as the listitself. For example, go might go through the list in the forward direction, and either store the data from thenodes in an array which you then iterate through backwards, or in another linked list that is built in theopposite diretion.

So how is it that this is possible with recursion? What is happening "under the hood" that makes thispossible? Briefly explain.

Hint: "activation record".

End of Examtotal points=100

Page 153: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

1Exam #150 Page: 1 Name: _____________________________________

150

CS32—Midterm ExamE01, W15, Phill Conrad, UC Santa BarbaraWednesday, 04/30/2015, 9:30am­10:45am

Name: ___________________________________________________

Umail Address: ______________________________@ umail.ucsb.edu

Please write your name above AND AT THE TOP OF EVERY PAGEBe sure you turn in every page of this exam.

Each exam is numbered (e.g. Exam #137).Each pages is numbered (e.g. Page 1, Page 2, etc.)The last page clearly says "End of Exam".

This exam is closed book, closed notes, closed mouth, cell phone offYou are permitted one sheet of paper (max size 8.5x11") on which to write notesThese sheets will be collected with the exam, and might not be returnedPlease write your name on your notes sheet

Page 154: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

2Exam #150 Page: 2 Name: _____________________________________

150

1. For these questions, assume 8-bit two's complement representation of negative integers. The left-most bit is the signbit, with 1 representing negative numbers, and 0 representing positive numbers.

a. (2 pts) Given the decimal number -96,what is this number's binary representation in 8-bit two's complement?

b. (2 pts) Given the decimal number -81,what is this number's binary representation in 8-bit two's complement?

c. (2 pts) Given the decimal number -22,what is this number's binary representation in 8-bit two's complement?

d. (2 pts) Given that 10010011 is the 8-bit two's complement representation of a number,what is that number in base ten?

e. (2 pts) Given that 10101100 is the 8-bit two's complement representation of a number,what is that number in base ten?

f. (2 pts) Given that 11111001 is the 8-bit two's complement representation of a number,what is that number in base ten?

Page 155: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

3Exam #150 Page: 3 Name: _____________________________________

150

2. Suppose you have an array called a full of n integer values, indexed 0 through n-1. For simplicity, suppose there areno duplicates. You need to implement a function to return the index of a certain key value k if it occurs in the array,or -1 if it does not.

As we've discussed, two possible techniques are linear search (which our textbook calls serial search, and binarysearch.

a. (6 pts) Binary search places one additional requirement on the elements of the array. What is this additionalrequirement? It can be stated in a single sentence.

b. (6 pts) Assuming that the array a meets this additional requirement, describe how to apply the binary searchalgorithm to this problem. Be clear, precise, and concise. DO NOT WRITE CODE OR PSEUDOCODE.Instead, describe the main idea of the algorithm in plain english. Though it is not required, if you wish, youmay make reference to a, n and k in your description.

c. (6 pts) Linear search has the advantage of not having this extra requirement, and is much easier to code andimplement correctly, but has a serious drawback as compared to binary search. Explain what that is. Again, itcan be stated in a single sentence—but for full credit, you must be as precise as possible in your answer.

d. (6 pts) Assuming that the array a does not meet the requirements for binary search, describe how to apply thelinear search algorithm to this problem. Be clear, precise, and concise. DO NOT WRITE CODE ORPSEUDOCODE. Instead, describe the main idea of the algorithm in plain english. Though it is not required,if you wish, you may make reference to a, n and k in your description.

Page 156: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

4Exam #150 Page: 4 Name: _____________________________________

150

3. So far, our discussion of sorting has focused on two main sorting methods: insertion sort, and selection sort. Both ofthese can be implemented as an "in place" sort—one where the values are not copied anywhere outside the array,except to a single temporary variable.

As we've discussed, both of these sorting techniques can be implemented "in place" as successive passes, where thesorted array is built up at one end of the array or the other, in a series of n-1 steps. Our practice examples havefocussed on doing insertion sort where the sorted array is built left to right, and on selection sort, where the sortedarray is built right to left—but this is not the only possible implementation.

For each of the tables below, fill in the successive steps of the algorithm shown. The first two match what we'vedone before. The second two check whether you can adapt your understanding of how selection sort and insertionwork to a novel situation.

Grading for parts (a,b): ­1 for each incorrect entry, up to max of ­8Grading for parts (c,d): ­1 for each incorrect entry, up to max of ­4

a. (8 pts) Sort using insertion sort, building sorted array at start of array (at left, the way we've done it before):

[0] [1] [2] [3] [4]33 29 48 17 6

         

         

         

6 17 29 33 48

b. (8 pts) Sort using selection sort, building sorted array at end of array (at right, the way we've done it before.):

[0] [1] [2] [3] [4]33 29 48 17 6

         

         

         

6 17 29 33 48

Page 157: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

5 Exam #150 Page: 5 Name:_____________________________________

150

c. (4 pts) Sort using insertion sort, building sorted array at END of array (at right, the OPPOSITE of the waywe've done it before, but still using the approach used in insertion sort.):

[0] [1] [2] [3] [4]33 29 48 17 6

         

         

         

6 17 29 33 48

d. (4 pts) Sort using selection sort, building sorted array at START of array (at left, the OPPOSITE of the waywe've done it before, but still using the approach used in selection sort.):

[0] [1] [2] [3] [4]33 29 48 17 6

         

         

         

6 17 29 33 48

Page 158: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

6Exam #150 Page: 6 Name: _____________________________________

150

4. Most of the code we write in this course goes in files that end in .cpp. >But sometimes we worked with each of thefollowing types of files. For each type, explain what its purpose is, and its relationship to .cpp files.

DON'T USE TOO MANY WORDS. Write just enough to get the main point across. Excessively verbose answersthat stray off point may be penalized.

a. (4 pts) Purpose of .h files:

b. (4 pts) .h files relationship to .cpp files:

c. (4 pts) Purpose of .o files:

d. (4 pts) .o files relationship to .cpp files.

e. (4 pts) Purpose of Makefile:

f. (4 pts) Relationship of Makefile to .cpp files:

Page 159: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

struct Node { int data; Node *next;} void printList(Node *head) { for (Node *p=head; p!=NULL; p=p->next) { cout << p->data << endl; }}

7Exam #150 Page: 7 Name: _____________________________________

150

5. At right is a fairly common definition fora C++ struct Node that can be used tomake a linked list of int values, along witha conventional implementation of afunction that prints the value of the linkedlist, one per line. As a homeworkassignment, you were asked to rewrite thefunction as a recursive function, i.e. to dothe same thing as this iterative version,but using recursion. BUT THAT'S NOTWHAT I'M ASKING YOU TO DO ONTHIS EXAM. So read carefully.

a. (10 pts) Write the definition of aC++ function calledprintListBackwards that also takes a Node *head as its parameter, and prints the list backwards.Given that the struct Node only has next pointers and no prev pointers, you might think this isimpossible, but with recursion is not only possible, it is trivially easy. (Well, if you understand recursion itis.)

HINT: If you are stuck, start by writing out the recursive version of printList which prints the listforwards using recursion. Then think about how you could tweak the function to print the list backwardsinstead.

THERE IS ONE MORE PROBLEM ON THE FINAL PAGE!

Page 160: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

8 Exam #150 Page: 8 Name:_____________________________________

150

b. (6 pts) Given that there are no prev pointers, there is no straightforward way to print the list backwardswithout iteration that doesn't involve storing some amount of temporary data that is the same size as the listitself. For example, go might go through the list in the forward direction, and either store the data from thenodes in an array which you then iterate through backwards, or in another linked list that is built in theopposite diretion.

So how is it that this is possible with recursion? What is happening "under the hood" that makes thispossible? Briefly explain.

Hint: "activation record".

End of Examtotal points=100

Page 161: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

1Exam #151 Page: 1 Name: _____________________________________

151

CS32—Midterm ExamE01, W15, Phill Conrad, UC Santa BarbaraWednesday, 04/30/2015, 9:30am­10:45am

Name: ___________________________________________________

Umail Address: ______________________________@ umail.ucsb.edu

Please write your name above AND AT THE TOP OF EVERY PAGEBe sure you turn in every page of this exam.

Each exam is numbered (e.g. Exam #137).Each pages is numbered (e.g. Page 1, Page 2, etc.)The last page clearly says "End of Exam".

This exam is closed book, closed notes, closed mouth, cell phone offYou are permitted one sheet of paper (max size 8.5x11") on which to write notesThese sheets will be collected with the exam, and might not be returnedPlease write your name on your notes sheet

Page 162: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

2Exam #151 Page: 2 Name: _____________________________________

151

1. For these questions, assume 8-bit two's complement representation of negative integers. The left-most bit is the signbit, with 1 representing negative numbers, and 0 representing positive numbers.

a. (2 pts) Given the decimal number -96,what is this number's binary representation in 8-bit two's complement?

b. (2 pts) Given the decimal number -115,what is this number's binary representation in 8-bit two's complement?

c. (2 pts) Given the decimal number -43,what is this number's binary representation in 8-bit two's complement?

d. (2 pts) Given that 10101100 is the 8-bit two's complement representation of a number,what is that number in base ten?

e. (2 pts) Given that 11100011 is the 8-bit two's complement representation of a number,what is that number in base ten?

f. (2 pts) Given that 10011100 is the 8-bit two's complement representation of a number,what is that number in base ten?

Page 163: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

3Exam #151 Page: 3 Name: _____________________________________

151

2. Suppose you have an array called a full of n integer values, indexed 0 through n-1. For simplicity, suppose there areno duplicates. You need to implement a function to return the index of a certain key value k if it occurs in the array,or -1 if it does not.

As we've discussed, two possible techniques are linear search (which our textbook calls serial search, and binarysearch.

a. (6 pts) Binary search places one additional requirement on the elements of the array. What is this additionalrequirement? It can be stated in a single sentence.

b. (6 pts) Assuming that the array a meets this additional requirement, describe how to apply the binary searchalgorithm to this problem. Be clear, precise, and concise. DO NOT WRITE CODE OR PSEUDOCODE.Instead, describe the main idea of the algorithm in plain english. Though it is not required, if you wish, youmay make reference to a, n and k in your description.

c. (6 pts) Linear search has the advantage of not having this extra requirement, and is much easier to code andimplement correctly, but has a serious drawback as compared to binary search. Explain what that is. Again, itcan be stated in a single sentence—but for full credit, you must be as precise as possible in your answer.

d. (6 pts) Assuming that the array a does not meet the requirements for binary search, describe how to apply thelinear search algorithm to this problem. Be clear, precise, and concise. DO NOT WRITE CODE ORPSEUDOCODE. Instead, describe the main idea of the algorithm in plain english. Though it is not required,if you wish, you may make reference to a, n and k in your description.

Page 164: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

4Exam #151 Page: 4 Name: _____________________________________

151

3. So far, our discussion of sorting has focused on two main sorting methods: insertion sort, and selection sort. Both ofthese can be implemented as an "in place" sort—one where the values are not copied anywhere outside the array,except to a single temporary variable.

As we've discussed, both of these sorting techniques can be implemented "in place" as successive passes, where thesorted array is built up at one end of the array or the other, in a series of n-1 steps. Our practice examples havefocussed on doing insertion sort where the sorted array is built left to right, and on selection sort, where the sortedarray is built right to left—but this is not the only possible implementation.

For each of the tables below, fill in the successive steps of the algorithm shown. The first two match what we'vedone before. The second two check whether you can adapt your understanding of how selection sort and insertionwork to a novel situation.

Grading for parts (a,b): ­1 for each incorrect entry, up to max of ­8Grading for parts (c,d): ­1 for each incorrect entry, up to max of ­4

a. (8 pts) Sort using insertion sort, building sorted array at start of array (at left, the way we've done it before):

[0] [1] [2] [3] [4]33 29 48 17 6

         

         

         

6 17 29 33 48

b. (8 pts) Sort using selection sort, building sorted array at end of array (at right, the way we've done it before.):

[0] [1] [2] [3] [4]33 29 48 17 6

         

         

         

6 17 29 33 48

Page 165: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

5 Exam #151 Page: 5 Name:_____________________________________

151

c. (4 pts) Sort using insertion sort, building sorted array at END of array (at right, the OPPOSITE of the waywe've done it before, but still using the approach used in insertion sort.):

[0] [1] [2] [3] [4]33 29 48 17 6

         

         

         

6 17 29 33 48

d. (4 pts) Sort using selection sort, building sorted array at START of array (at left, the OPPOSITE of the waywe've done it before, but still using the approach used in selection sort.):

[0] [1] [2] [3] [4]33 29 48 17 6

         

         

         

6 17 29 33 48

Page 166: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

6Exam #151 Page: 6 Name: _____________________________________

151

4. Most of the code we write in this course goes in files that end in .cpp. >But sometimes we worked with each of thefollowing types of files. For each type, explain what its purpose is, and its relationship to .cpp files.

DON'T USE TOO MANY WORDS. Write just enough to get the main point across. Excessively verbose answersthat stray off point may be penalized.

a. (4 pts) Purpose of .h files:

b. (4 pts) .h files relationship to .cpp files:

c. (4 pts) Purpose of .o files:

d. (4 pts) .o files relationship to .cpp files.

e. (4 pts) Purpose of Makefile:

f. (4 pts) Relationship of Makefile to .cpp files:

Page 167: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

struct Node { int data; Node *next;} void printList(Node *head) { for (Node *p=head; p!=NULL; p=p->next) { cout << p->data << endl; }}

7Exam #151 Page: 7 Name: _____________________________________

151

5. At right is a fairly common definition fora C++ struct Node that can be used tomake a linked list of int values, along witha conventional implementation of afunction that prints the value of the linkedlist, one per line. As a homeworkassignment, you were asked to rewrite thefunction as a recursive function, i.e. to dothe same thing as this iterative version,but using recursion. BUT THAT'S NOTWHAT I'M ASKING YOU TO DO ONTHIS EXAM. So read carefully.

a. (10 pts) Write the definition of aC++ function calledprintListBackwards that also takes a Node *head as its parameter, and prints the list backwards.Given that the struct Node only has next pointers and no prev pointers, you might think this isimpossible, but with recursion is not only possible, it is trivially easy. (Well, if you understand recursion itis.)

HINT: If you are stuck, start by writing out the recursive version of printList which prints the listforwards using recursion. Then think about how you could tweak the function to print the list backwardsinstead.

THERE IS ONE MORE PROBLEM ON THE FINAL PAGE!

Page 168: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

8 Exam #151 Page: 8 Name:_____________________________________

151

b. (6 pts) Given that there are no prev pointers, there is no straightforward way to print the list backwardswithout iteration that doesn't involve storing some amount of temporary data that is the same size as the listitself. For example, go might go through the list in the forward direction, and either store the data from thenodes in an array which you then iterate through backwards, or in another linked list that is built in theopposite diretion.

So how is it that this is possible with recursion? What is happening "under the hood" that makes thispossible? Briefly explain.

Hint: "activation record".

End of Examtotal points=100

Page 169: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

1Exam #152 Page: 1 Name: _____________________________________

152

CS32—Midterm ExamE01, W15, Phill Conrad, UC Santa BarbaraWednesday, 04/30/2015, 9:30am­10:45am

Name: ___________________________________________________

Umail Address: ______________________________@ umail.ucsb.edu

Please write your name above AND AT THE TOP OF EVERY PAGEBe sure you turn in every page of this exam.

Each exam is numbered (e.g. Exam #137).Each pages is numbered (e.g. Page 1, Page 2, etc.)The last page clearly says "End of Exam".

This exam is closed book, closed notes, closed mouth, cell phone offYou are permitted one sheet of paper (max size 8.5x11") on which to write notesThese sheets will be collected with the exam, and might not be returnedPlease write your name on your notes sheet

Page 170: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

2Exam #152 Page: 2 Name: _____________________________________

152

1. For these questions, assume 8-bit two's complement representation of negative integers. The left-most bit is the signbit, with 1 representing negative numbers, and 0 representing positive numbers.

a. (2 pts) Given the decimal number -96,what is this number's binary representation in 8-bit two's complement?

b. (2 pts) Given the decimal number -32,what is this number's binary representation in 8-bit two's complement?

c. (2 pts) Given the decimal number -24,what is this number's binary representation in 8-bit two's complement?

d. (2 pts) Given that 10101011 is the 8-bit two's complement representation of a number,what is that number in base ten?

e. (2 pts) Given that 11110110 is the 8-bit two's complement representation of a number,what is that number in base ten?

f. (2 pts) Given that 11001011 is the 8-bit two's complement representation of a number,what is that number in base ten?

Page 171: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

3Exam #152 Page: 3 Name: _____________________________________

152

2. Suppose you have an array called a full of n integer values, indexed 0 through n-1. For simplicity, suppose there areno duplicates. You need to implement a function to return the index of a certain key value k if it occurs in the array,or -1 if it does not.

As we've discussed, two possible techniques are linear search (which our textbook calls serial search, and binarysearch.

a. (6 pts) Binary search places one additional requirement on the elements of the array. What is this additionalrequirement? It can be stated in a single sentence.

b. (6 pts) Assuming that the array a meets this additional requirement, describe how to apply the binary searchalgorithm to this problem. Be clear, precise, and concise. DO NOT WRITE CODE OR PSEUDOCODE.Instead, describe the main idea of the algorithm in plain english. Though it is not required, if you wish, youmay make reference to a, n and k in your description.

c. (6 pts) Linear search has the advantage of not having this extra requirement, and is much easier to code andimplement correctly, but has a serious drawback as compared to binary search. Explain what that is. Again, itcan be stated in a single sentence—but for full credit, you must be as precise as possible in your answer.

d. (6 pts) Assuming that the array a does not meet the requirements for binary search, describe how to apply thelinear search algorithm to this problem. Be clear, precise, and concise. DO NOT WRITE CODE ORPSEUDOCODE. Instead, describe the main idea of the algorithm in plain english. Though it is not required,if you wish, you may make reference to a, n and k in your description.

Page 172: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

4Exam #152 Page: 4 Name: _____________________________________

152

3. So far, our discussion of sorting has focused on two main sorting methods: insertion sort, and selection sort. Both ofthese can be implemented as an "in place" sort—one where the values are not copied anywhere outside the array,except to a single temporary variable.

As we've discussed, both of these sorting techniques can be implemented "in place" as successive passes, where thesorted array is built up at one end of the array or the other, in a series of n-1 steps. Our practice examples havefocussed on doing insertion sort where the sorted array is built left to right, and on selection sort, where the sortedarray is built right to left—but this is not the only possible implementation.

For each of the tables below, fill in the successive steps of the algorithm shown. The first two match what we'vedone before. The second two check whether you can adapt your understanding of how selection sort and insertionwork to a novel situation.

Grading for parts (a,b): ­1 for each incorrect entry, up to max of ­8Grading for parts (c,d): ­1 for each incorrect entry, up to max of ­4

a. (8 pts) Sort using insertion sort, building sorted array at start of array (at left, the way we've done it before):

[0] [1] [2] [3] [4]33 29 48 17 6

         

         

         

6 17 29 33 48

b. (8 pts) Sort using selection sort, building sorted array at end of array (at right, the way we've done it before.):

[0] [1] [2] [3] [4]33 29 48 17 6

         

         

         

6 17 29 33 48

Page 173: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

5 Exam #152 Page: 5 Name:_____________________________________

152

c. (4 pts) Sort using insertion sort, building sorted array at END of array (at right, the OPPOSITE of the waywe've done it before, but still using the approach used in insertion sort.):

[0] [1] [2] [3] [4]33 29 48 17 6

         

         

         

6 17 29 33 48

d. (4 pts) Sort using selection sort, building sorted array at START of array (at left, the OPPOSITE of the waywe've done it before, but still using the approach used in selection sort.):

[0] [1] [2] [3] [4]33 29 48 17 6

         

         

         

6 17 29 33 48

Page 174: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

6Exam #152 Page: 6 Name: _____________________________________

152

4. Most of the code we write in this course goes in files that end in .cpp. >But sometimes we worked with each of thefollowing types of files. For each type, explain what its purpose is, and its relationship to .cpp files.

DON'T USE TOO MANY WORDS. Write just enough to get the main point across. Excessively verbose answersthat stray off point may be penalized.

a. (4 pts) Purpose of .h files:

b. (4 pts) .h files relationship to .cpp files:

c. (4 pts) Purpose of .o files:

d. (4 pts) .o files relationship to .cpp files.

e. (4 pts) Purpose of Makefile:

f. (4 pts) Relationship of Makefile to .cpp files:

Page 175: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

struct Node { int data; Node *next;} void printList(Node *head) { for (Node *p=head; p!=NULL; p=p->next) { cout << p->data << endl; }}

7Exam #152 Page: 7 Name: _____________________________________

152

5. At right is a fairly common definition fora C++ struct Node that can be used tomake a linked list of int values, along witha conventional implementation of afunction that prints the value of the linkedlist, one per line. As a homeworkassignment, you were asked to rewrite thefunction as a recursive function, i.e. to dothe same thing as this iterative version,but using recursion. BUT THAT'S NOTWHAT I'M ASKING YOU TO DO ONTHIS EXAM. So read carefully.

a. (10 pts) Write the definition of aC++ function calledprintListBackwards that also takes a Node *head as its parameter, and prints the list backwards.Given that the struct Node only has next pointers and no prev pointers, you might think this isimpossible, but with recursion is not only possible, it is trivially easy. (Well, if you understand recursion itis.)

HINT: If you are stuck, start by writing out the recursive version of printList which prints the listforwards using recursion. Then think about how you could tweak the function to print the list backwardsinstead.

THERE IS ONE MORE PROBLEM ON THE FINAL PAGE!

Page 176: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

8 Exam #152 Page: 8 Name:_____________________________________

152

b. (6 pts) Given that there are no prev pointers, there is no straightforward way to print the list backwardswithout iteration that doesn't involve storing some amount of temporary data that is the same size as the listitself. For example, go might go through the list in the forward direction, and either store the data from thenodes in an array which you then iterate through backwards, or in another linked list that is built in theopposite diretion.

So how is it that this is possible with recursion? What is happening "under the hood" that makes thispossible? Briefly explain.

Hint: "activation record".

End of Examtotal points=100

Page 177: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

1Exam #153 Page: 1 Name: _____________________________________

153

CS32—Midterm ExamE01, W15, Phill Conrad, UC Santa BarbaraWednesday, 04/30/2015, 9:30am­10:45am

Name: ___________________________________________________

Umail Address: ______________________________@ umail.ucsb.edu

Please write your name above AND AT THE TOP OF EVERY PAGEBe sure you turn in every page of this exam.

Each exam is numbered (e.g. Exam #137).Each pages is numbered (e.g. Page 1, Page 2, etc.)The last page clearly says "End of Exam".

This exam is closed book, closed notes, closed mouth, cell phone offYou are permitted one sheet of paper (max size 8.5x11") on which to write notesThese sheets will be collected with the exam, and might not be returnedPlease write your name on your notes sheet

Page 178: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

2Exam #153 Page: 2 Name: _____________________________________

153

1. For these questions, assume 8-bit two's complement representation of negative integers. The left-most bit is the signbit, with 1 representing negative numbers, and 0 representing positive numbers.

a. (2 pts) Given the decimal number -96,what is this number's binary representation in 8-bit two's complement?

b. (2 pts) Given the decimal number -66,what is this number's binary representation in 8-bit two's complement?

c. (2 pts) Given the decimal number -46,what is this number's binary representation in 8-bit two's complement?

d. (2 pts) Given that 11000101 is the 8-bit two's complement representation of a number,what is that number in base ten?

e. (2 pts) Given that 10101101 is the 8-bit two's complement representation of a number,what is that number in base ten?

f. (2 pts) Given that 11101110 is the 8-bit two's complement representation of a number,what is that number in base ten?

Page 179: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

3Exam #153 Page: 3 Name: _____________________________________

153

2. Suppose you have an array called a full of n integer values, indexed 0 through n-1. For simplicity, suppose there areno duplicates. You need to implement a function to return the index of a certain key value k if it occurs in the array,or -1 if it does not.

As we've discussed, two possible techniques are linear search (which our textbook calls serial search, and binarysearch.

a. (6 pts) Binary search places one additional requirement on the elements of the array. What is this additionalrequirement? It can be stated in a single sentence.

b. (6 pts) Assuming that the array a meets this additional requirement, describe how to apply the binary searchalgorithm to this problem. Be clear, precise, and concise. DO NOT WRITE CODE OR PSEUDOCODE.Instead, describe the main idea of the algorithm in plain english. Though it is not required, if you wish, youmay make reference to a, n and k in your description.

c. (6 pts) Linear search has the advantage of not having this extra requirement, and is much easier to code andimplement correctly, but has a serious drawback as compared to binary search. Explain what that is. Again, itcan be stated in a single sentence—but for full credit, you must be as precise as possible in your answer.

d. (6 pts) Assuming that the array a does not meet the requirements for binary search, describe how to apply thelinear search algorithm to this problem. Be clear, precise, and concise. DO NOT WRITE CODE ORPSEUDOCODE. Instead, describe the main idea of the algorithm in plain english. Though it is not required,if you wish, you may make reference to a, n and k in your description.

Page 180: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

4Exam #153 Page: 4 Name: _____________________________________

153

3. So far, our discussion of sorting has focused on two main sorting methods: insertion sort, and selection sort. Both ofthese can be implemented as an "in place" sort—one where the values are not copied anywhere outside the array,except to a single temporary variable.

As we've discussed, both of these sorting techniques can be implemented "in place" as successive passes, where thesorted array is built up at one end of the array or the other, in a series of n-1 steps. Our practice examples havefocussed on doing insertion sort where the sorted array is built left to right, and on selection sort, where the sortedarray is built right to left—but this is not the only possible implementation.

For each of the tables below, fill in the successive steps of the algorithm shown. The first two match what we'vedone before. The second two check whether you can adapt your understanding of how selection sort and insertionwork to a novel situation.

Grading for parts (a,b): ­1 for each incorrect entry, up to max of ­8Grading for parts (c,d): ­1 for each incorrect entry, up to max of ­4

a. (8 pts) Sort using insertion sort, building sorted array at start of array (at left, the way we've done it before):

[0] [1] [2] [3] [4]33 29 48 17 6

         

         

         

6 17 29 33 48

b. (8 pts) Sort using selection sort, building sorted array at end of array (at right, the way we've done it before.):

[0] [1] [2] [3] [4]33 29 48 17 6

         

         

         

6 17 29 33 48

Page 181: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

5 Exam #153 Page: 5 Name:_____________________________________

153

c. (4 pts) Sort using insertion sort, building sorted array at END of array (at right, the OPPOSITE of the waywe've done it before, but still using the approach used in insertion sort.):

[0] [1] [2] [3] [4]33 29 48 17 6

         

         

         

6 17 29 33 48

d. (4 pts) Sort using selection sort, building sorted array at START of array (at left, the OPPOSITE of the waywe've done it before, but still using the approach used in selection sort.):

[0] [1] [2] [3] [4]33 29 48 17 6

         

         

         

6 17 29 33 48

Page 182: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

6Exam #153 Page: 6 Name: _____________________________________

153

4. Most of the code we write in this course goes in files that end in .cpp. >But sometimes we worked with each of thefollowing types of files. For each type, explain what its purpose is, and its relationship to .cpp files.

DON'T USE TOO MANY WORDS. Write just enough to get the main point across. Excessively verbose answersthat stray off point may be penalized.

a. (4 pts) Purpose of .h files:

b. (4 pts) .h files relationship to .cpp files:

c. (4 pts) Purpose of .o files:

d. (4 pts) .o files relationship to .cpp files.

e. (4 pts) Purpose of Makefile:

f. (4 pts) Relationship of Makefile to .cpp files:

Page 183: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

struct Node { int data; Node *next;} void printList(Node *head) { for (Node *p=head; p!=NULL; p=p->next) { cout << p->data << endl; }}

7Exam #153 Page: 7 Name: _____________________________________

153

5. At right is a fairly common definition fora C++ struct Node that can be used tomake a linked list of int values, along witha conventional implementation of afunction that prints the value of the linkedlist, one per line. As a homeworkassignment, you were asked to rewrite thefunction as a recursive function, i.e. to dothe same thing as this iterative version,but using recursion. BUT THAT'S NOTWHAT I'M ASKING YOU TO DO ONTHIS EXAM. So read carefully.

a. (10 pts) Write the definition of aC++ function calledprintListBackwards that also takes a Node *head as its parameter, and prints the list backwards.Given that the struct Node only has next pointers and no prev pointers, you might think this isimpossible, but with recursion is not only possible, it is trivially easy. (Well, if you understand recursion itis.)

HINT: If you are stuck, start by writing out the recursive version of printList which prints the listforwards using recursion. Then think about how you could tweak the function to print the list backwardsinstead.

THERE IS ONE MORE PROBLEM ON THE FINAL PAGE!

Page 184: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

8 Exam #153 Page: 8 Name:_____________________________________

153

b. (6 pts) Given that there are no prev pointers, there is no straightforward way to print the list backwardswithout iteration that doesn't involve storing some amount of temporary data that is the same size as the listitself. For example, go might go through the list in the forward direction, and either store the data from thenodes in an array which you then iterate through backwards, or in another linked list that is built in theopposite diretion.

So how is it that this is possible with recursion? What is happening "under the hood" that makes thispossible? Briefly explain.

Hint: "activation record".

End of Examtotal points=100

Page 185: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

1Exam #154 Page: 1 Name: _____________________________________

154

CS32—Midterm ExamE01, W15, Phill Conrad, UC Santa BarbaraWednesday, 04/30/2015, 9:30am­10:45am

Name: ___________________________________________________

Umail Address: ______________________________@ umail.ucsb.edu

Please write your name above AND AT THE TOP OF EVERY PAGEBe sure you turn in every page of this exam.

Each exam is numbered (e.g. Exam #137).Each pages is numbered (e.g. Page 1, Page 2, etc.)The last page clearly says "End of Exam".

This exam is closed book, closed notes, closed mouth, cell phone offYou are permitted one sheet of paper (max size 8.5x11") on which to write notesThese sheets will be collected with the exam, and might not be returnedPlease write your name on your notes sheet

Page 186: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

2Exam #154 Page: 2 Name: _____________________________________

154

1. For these questions, assume 8-bit two's complement representation of negative integers. The left-most bit is the signbit, with 1 representing negative numbers, and 0 representing positive numbers.

a. (2 pts) Given the decimal number -96,what is this number's binary representation in 8-bit two's complement?

b. (2 pts) Given the decimal number -91,what is this number's binary representation in 8-bit two's complement?

c. (2 pts) Given the decimal number -108,what is this number's binary representation in 8-bit two's complement?

d. (2 pts) Given that 11111000 is the 8-bit two's complement representation of a number,what is that number in base ten?

e. (2 pts) Given that 10001000 is the 8-bit two's complement representation of a number,what is that number in base ten?

f. (2 pts) Given that 10000101 is the 8-bit two's complement representation of a number,what is that number in base ten?

Page 187: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

3Exam #154 Page: 3 Name: _____________________________________

154

2. Suppose you have an array called a full of n integer values, indexed 0 through n-1. For simplicity, suppose there areno duplicates. You need to implement a function to return the index of a certain key value k if it occurs in the array,or -1 if it does not.

As we've discussed, two possible techniques are linear search (which our textbook calls serial search, and binarysearch.

a. (6 pts) Binary search places one additional requirement on the elements of the array. What is this additionalrequirement? It can be stated in a single sentence.

b. (6 pts) Assuming that the array a meets this additional requirement, describe how to apply the binary searchalgorithm to this problem. Be clear, precise, and concise. DO NOT WRITE CODE OR PSEUDOCODE.Instead, describe the main idea of the algorithm in plain english. Though it is not required, if you wish, youmay make reference to a, n and k in your description.

c. (6 pts) Linear search has the advantage of not having this extra requirement, and is much easier to code andimplement correctly, but has a serious drawback as compared to binary search. Explain what that is. Again, itcan be stated in a single sentence—but for full credit, you must be as precise as possible in your answer.

d. (6 pts) Assuming that the array a does not meet the requirements for binary search, describe how to apply thelinear search algorithm to this problem. Be clear, precise, and concise. DO NOT WRITE CODE ORPSEUDOCODE. Instead, describe the main idea of the algorithm in plain english. Though it is not required,if you wish, you may make reference to a, n and k in your description.

Page 188: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

4Exam #154 Page: 4 Name: _____________________________________

154

3. So far, our discussion of sorting has focused on two main sorting methods: insertion sort, and selection sort. Both ofthese can be implemented as an "in place" sort—one where the values are not copied anywhere outside the array,except to a single temporary variable.

As we've discussed, both of these sorting techniques can be implemented "in place" as successive passes, where thesorted array is built up at one end of the array or the other, in a series of n-1 steps. Our practice examples havefocussed on doing insertion sort where the sorted array is built left to right, and on selection sort, where the sortedarray is built right to left—but this is not the only possible implementation.

For each of the tables below, fill in the successive steps of the algorithm shown. The first two match what we'vedone before. The second two check whether you can adapt your understanding of how selection sort and insertionwork to a novel situation.

Grading for parts (a,b): ­1 for each incorrect entry, up to max of ­8Grading for parts (c,d): ­1 for each incorrect entry, up to max of ­4

a. (8 pts) Sort using insertion sort, building sorted array at start of array (at left, the way we've done it before):

[0] [1] [2] [3] [4]33 29 48 17 6

         

         

         

6 17 29 33 48

b. (8 pts) Sort using selection sort, building sorted array at end of array (at right, the way we've done it before.):

[0] [1] [2] [3] [4]33 29 48 17 6

         

         

         

6 17 29 33 48

Page 189: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

5 Exam #154 Page: 5 Name:_____________________________________

154

c. (4 pts) Sort using insertion sort, building sorted array at END of array (at right, the OPPOSITE of the waywe've done it before, but still using the approach used in insertion sort.):

[0] [1] [2] [3] [4]33 29 48 17 6

         

         

         

6 17 29 33 48

d. (4 pts) Sort using selection sort, building sorted array at START of array (at left, the OPPOSITE of the waywe've done it before, but still using the approach used in selection sort.):

[0] [1] [2] [3] [4]33 29 48 17 6

         

         

         

6 17 29 33 48

Page 190: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

6Exam #154 Page: 6 Name: _____________________________________

154

4. Most of the code we write in this course goes in files that end in .cpp. >But sometimes we worked with each of thefollowing types of files. For each type, explain what its purpose is, and its relationship to .cpp files.

DON'T USE TOO MANY WORDS. Write just enough to get the main point across. Excessively verbose answersthat stray off point may be penalized.

a. (4 pts) Purpose of .h files:

b. (4 pts) .h files relationship to .cpp files:

c. (4 pts) Purpose of .o files:

d. (4 pts) .o files relationship to .cpp files.

e. (4 pts) Purpose of Makefile:

f. (4 pts) Relationship of Makefile to .cpp files:

Page 191: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

struct Node { int data; Node *next;} void printList(Node *head) { for (Node *p=head; p!=NULL; p=p->next) { cout << p->data << endl; }}

7Exam #154 Page: 7 Name: _____________________________________

154

5. At right is a fairly common definition fora C++ struct Node that can be used tomake a linked list of int values, along witha conventional implementation of afunction that prints the value of the linkedlist, one per line. As a homeworkassignment, you were asked to rewrite thefunction as a recursive function, i.e. to dothe same thing as this iterative version,but using recursion. BUT THAT'S NOTWHAT I'M ASKING YOU TO DO ONTHIS EXAM. So read carefully.

a. (10 pts) Write the definition of aC++ function calledprintListBackwards that also takes a Node *head as its parameter, and prints the list backwards.Given that the struct Node only has next pointers and no prev pointers, you might think this isimpossible, but with recursion is not only possible, it is trivially easy. (Well, if you understand recursion itis.)

HINT: If you are stuck, start by writing out the recursive version of printList which prints the listforwards using recursion. Then think about how you could tweak the function to print the list backwardsinstead.

THERE IS ONE MORE PROBLEM ON THE FINAL PAGE!

Page 192: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

8 Exam #154 Page: 8 Name:_____________________________________

154

b. (6 pts) Given that there are no prev pointers, there is no straightforward way to print the list backwardswithout iteration that doesn't involve storing some amount of temporary data that is the same size as the listitself. For example, go might go through the list in the forward direction, and either store the data from thenodes in an array which you then iterate through backwards, or in another linked list that is built in theopposite diretion.

So how is it that this is possible with recursion? What is happening "under the hood" that makes thispossible? Briefly explain.

Hint: "activation record".

End of Examtotal points=100

Page 193: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

1Exam #155 Page: 1 Name: _____________________________________

155

CS32—Midterm ExamE01, W15, Phill Conrad, UC Santa BarbaraWednesday, 04/30/2015, 9:30am­10:45am

Name: ___________________________________________________

Umail Address: ______________________________@ umail.ucsb.edu

Please write your name above AND AT THE TOP OF EVERY PAGEBe sure you turn in every page of this exam.

Each exam is numbered (e.g. Exam #137).Each pages is numbered (e.g. Page 1, Page 2, etc.)The last page clearly says "End of Exam".

This exam is closed book, closed notes, closed mouth, cell phone offYou are permitted one sheet of paper (max size 8.5x11") on which to write notesThese sheets will be collected with the exam, and might not be returnedPlease write your name on your notes sheet

Page 194: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

2Exam #155 Page: 2 Name: _____________________________________

155

1. For these questions, assume 8-bit two's complement representation of negative integers. The left-most bit is the signbit, with 1 representing negative numbers, and 0 representing positive numbers.

a. (2 pts) Given the decimal number -96,what is this number's binary representation in 8-bit two's complement?

b. (2 pts) Given the decimal number -125,what is this number's binary representation in 8-bit two's complement?

c. (2 pts) Given the decimal number -2,what is this number's binary representation in 8-bit two's complement?

d. (2 pts) Given that 10010010 is the 8-bit two's complement representation of a number,what is that number in base ten?

e. (2 pts) Given that 10111111 is the 8-bit two's complement representation of a number,what is that number in base ten?

f. (2 pts) Given that 10101000 is the 8-bit two's complement representation of a number,what is that number in base ten?

Page 195: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

3Exam #155 Page: 3 Name: _____________________________________

155

2. Suppose you have an array called a full of n integer values, indexed 0 through n-1. For simplicity, suppose there areno duplicates. You need to implement a function to return the index of a certain key value k if it occurs in the array,or -1 if it does not.

As we've discussed, two possible techniques are linear search (which our textbook calls serial search, and binarysearch.

a. (6 pts) Binary search places one additional requirement on the elements of the array. What is this additionalrequirement? It can be stated in a single sentence.

b. (6 pts) Assuming that the array a meets this additional requirement, describe how to apply the binary searchalgorithm to this problem. Be clear, precise, and concise. DO NOT WRITE CODE OR PSEUDOCODE.Instead, describe the main idea of the algorithm in plain english. Though it is not required, if you wish, youmay make reference to a, n and k in your description.

c. (6 pts) Linear search has the advantage of not having this extra requirement, and is much easier to code andimplement correctly, but has a serious drawback as compared to binary search. Explain what that is. Again, itcan be stated in a single sentence—but for full credit, you must be as precise as possible in your answer.

d. (6 pts) Assuming that the array a does not meet the requirements for binary search, describe how to apply thelinear search algorithm to this problem. Be clear, precise, and concise. DO NOT WRITE CODE ORPSEUDOCODE. Instead, describe the main idea of the algorithm in plain english. Though it is not required,if you wish, you may make reference to a, n and k in your description.

Page 196: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

4Exam #155 Page: 4 Name: _____________________________________

155

3. So far, our discussion of sorting has focused on two main sorting methods: insertion sort, and selection sort. Both ofthese can be implemented as an "in place" sort—one where the values are not copied anywhere outside the array,except to a single temporary variable.

As we've discussed, both of these sorting techniques can be implemented "in place" as successive passes, where thesorted array is built up at one end of the array or the other, in a series of n-1 steps. Our practice examples havefocussed on doing insertion sort where the sorted array is built left to right, and on selection sort, where the sortedarray is built right to left—but this is not the only possible implementation.

For each of the tables below, fill in the successive steps of the algorithm shown. The first two match what we'vedone before. The second two check whether you can adapt your understanding of how selection sort and insertionwork to a novel situation.

Grading for parts (a,b): ­1 for each incorrect entry, up to max of ­8Grading for parts (c,d): ­1 for each incorrect entry, up to max of ­4

a. (8 pts) Sort using insertion sort, building sorted array at start of array (at left, the way we've done it before):

[0] [1] [2] [3] [4]33 29 48 17 6

         

         

         

6 17 29 33 48

b. (8 pts) Sort using selection sort, building sorted array at end of array (at right, the way we've done it before.):

[0] [1] [2] [3] [4]33 29 48 17 6

         

         

         

6 17 29 33 48

Page 197: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

5 Exam #155 Page: 5 Name:_____________________________________

155

c. (4 pts) Sort using insertion sort, building sorted array at END of array (at right, the OPPOSITE of the waywe've done it before, but still using the approach used in insertion sort.):

[0] [1] [2] [3] [4]33 29 48 17 6

         

         

         

6 17 29 33 48

d. (4 pts) Sort using selection sort, building sorted array at START of array (at left, the OPPOSITE of the waywe've done it before, but still using the approach used in selection sort.):

[0] [1] [2] [3] [4]33 29 48 17 6

         

         

         

6 17 29 33 48

Page 198: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

6Exam #155 Page: 6 Name: _____________________________________

155

4. Most of the code we write in this course goes in files that end in .cpp. >But sometimes we worked with each of thefollowing types of files. For each type, explain what its purpose is, and its relationship to .cpp files.

DON'T USE TOO MANY WORDS. Write just enough to get the main point across. Excessively verbose answersthat stray off point may be penalized.

a. (4 pts) Purpose of .h files:

b. (4 pts) .h files relationship to .cpp files:

c. (4 pts) Purpose of .o files:

d. (4 pts) .o files relationship to .cpp files.

e. (4 pts) Purpose of Makefile:

f. (4 pts) Relationship of Makefile to .cpp files:

Page 199: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

struct Node { int data; Node *next;} void printList(Node *head) { for (Node *p=head; p!=NULL; p=p->next) { cout << p->data << endl; }}

7Exam #155 Page: 7 Name: _____________________________________

155

5. At right is a fairly common definition fora C++ struct Node that can be used tomake a linked list of int values, along witha conventional implementation of afunction that prints the value of the linkedlist, one per line. As a homeworkassignment, you were asked to rewrite thefunction as a recursive function, i.e. to dothe same thing as this iterative version,but using recursion. BUT THAT'S NOTWHAT I'M ASKING YOU TO DO ONTHIS EXAM. So read carefully.

a. (10 pts) Write the definition of aC++ function calledprintListBackwards that also takes a Node *head as its parameter, and prints the list backwards.Given that the struct Node only has next pointers and no prev pointers, you might think this isimpossible, but with recursion is not only possible, it is trivially easy. (Well, if you understand recursion itis.)

HINT: If you are stuck, start by writing out the recursive version of printList which prints the listforwards using recursion. Then think about how you could tweak the function to print the list backwardsinstead.

THERE IS ONE MORE PROBLEM ON THE FINAL PAGE!

Page 200: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

8 Exam #155 Page: 8 Name:_____________________________________

155

b. (6 pts) Given that there are no prev pointers, there is no straightforward way to print the list backwardswithout iteration that doesn't involve storing some amount of temporary data that is the same size as the listitself. For example, go might go through the list in the forward direction, and either store the data from thenodes in an array which you then iterate through backwards, or in another linked list that is built in theopposite diretion.

So how is it that this is possible with recursion? What is happening "under the hood" that makes thispossible? Briefly explain.

Hint: "activation record".

End of Examtotal points=100

Page 201: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

1Exam #156 Page: 1 Name: _____________________________________

156

CS32—Midterm ExamE01, W15, Phill Conrad, UC Santa BarbaraWednesday, 04/30/2015, 9:30am­10:45am

Name: ___________________________________________________

Umail Address: ______________________________@ umail.ucsb.edu

Please write your name above AND AT THE TOP OF EVERY PAGEBe sure you turn in every page of this exam.

Each exam is numbered (e.g. Exam #137).Each pages is numbered (e.g. Page 1, Page 2, etc.)The last page clearly says "End of Exam".

This exam is closed book, closed notes, closed mouth, cell phone offYou are permitted one sheet of paper (max size 8.5x11") on which to write notesThese sheets will be collected with the exam, and might not be returnedPlease write your name on your notes sheet

Page 202: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

2Exam #156 Page: 2 Name: _____________________________________

156

1. For these questions, assume 8-bit two's complement representation of negative integers. The left-most bit is the signbit, with 1 representing negative numbers, and 0 representing positive numbers.

a. (2 pts) Given the decimal number -96,what is this number's binary representation in 8-bit two's complement?

b. (2 pts) Given the decimal number -41,what is this number's binary representation in 8-bit two's complement?

c. (2 pts) Given the decimal number -111,what is this number's binary representation in 8-bit two's complement?

d. (2 pts) Given that 11010010 is the 8-bit two's complement representation of a number,what is that number in base ten?

e. (2 pts) Given that 11010110 is the 8-bit two's complement representation of a number,what is that number in base ten?

f. (2 pts) Given that 11011010 is the 8-bit two's complement representation of a number,what is that number in base ten?

Page 203: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

3Exam #156 Page: 3 Name: _____________________________________

156

2. Suppose you have an array called a full of n integer values, indexed 0 through n-1. For simplicity, suppose there areno duplicates. You need to implement a function to return the index of a certain key value k if it occurs in the array,or -1 if it does not.

As we've discussed, two possible techniques are linear search (which our textbook calls serial search, and binarysearch.

a. (6 pts) Binary search places one additional requirement on the elements of the array. What is this additionalrequirement? It can be stated in a single sentence.

b. (6 pts) Assuming that the array a meets this additional requirement, describe how to apply the binary searchalgorithm to this problem. Be clear, precise, and concise. DO NOT WRITE CODE OR PSEUDOCODE.Instead, describe the main idea of the algorithm in plain english. Though it is not required, if you wish, youmay make reference to a, n and k in your description.

c. (6 pts) Linear search has the advantage of not having this extra requirement, and is much easier to code andimplement correctly, but has a serious drawback as compared to binary search. Explain what that is. Again, itcan be stated in a single sentence—but for full credit, you must be as precise as possible in your answer.

d. (6 pts) Assuming that the array a does not meet the requirements for binary search, describe how to apply thelinear search algorithm to this problem. Be clear, precise, and concise. DO NOT WRITE CODE ORPSEUDOCODE. Instead, describe the main idea of the algorithm in plain english. Though it is not required,if you wish, you may make reference to a, n and k in your description.

Page 204: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

4Exam #156 Page: 4 Name: _____________________________________

156

3. So far, our discussion of sorting has focused on two main sorting methods: insertion sort, and selection sort. Both ofthese can be implemented as an "in place" sort—one where the values are not copied anywhere outside the array,except to a single temporary variable.

As we've discussed, both of these sorting techniques can be implemented "in place" as successive passes, where thesorted array is built up at one end of the array or the other, in a series of n-1 steps. Our practice examples havefocussed on doing insertion sort where the sorted array is built left to right, and on selection sort, where the sortedarray is built right to left—but this is not the only possible implementation.

For each of the tables below, fill in the successive steps of the algorithm shown. The first two match what we'vedone before. The second two check whether you can adapt your understanding of how selection sort and insertionwork to a novel situation.

Grading for parts (a,b): ­1 for each incorrect entry, up to max of ­8Grading for parts (c,d): ­1 for each incorrect entry, up to max of ­4

a. (8 pts) Sort using insertion sort, building sorted array at start of array (at left, the way we've done it before):

[0] [1] [2] [3] [4]33 29 48 17 6

         

         

         

6 17 29 33 48

b. (8 pts) Sort using selection sort, building sorted array at end of array (at right, the way we've done it before.):

[0] [1] [2] [3] [4]33 29 48 17 6

         

         

         

6 17 29 33 48

Page 205: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

5 Exam #156 Page: 5 Name:_____________________________________

156

c. (4 pts) Sort using insertion sort, building sorted array at END of array (at right, the OPPOSITE of the waywe've done it before, but still using the approach used in insertion sort.):

[0] [1] [2] [3] [4]33 29 48 17 6

         

         

         

6 17 29 33 48

d. (4 pts) Sort using selection sort, building sorted array at START of array (at left, the OPPOSITE of the waywe've done it before, but still using the approach used in selection sort.):

[0] [1] [2] [3] [4]33 29 48 17 6

         

         

         

6 17 29 33 48

Page 206: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

6Exam #156 Page: 6 Name: _____________________________________

156

4. Most of the code we write in this course goes in files that end in .cpp. >But sometimes we worked with each of thefollowing types of files. For each type, explain what its purpose is, and its relationship to .cpp files.

DON'T USE TOO MANY WORDS. Write just enough to get the main point across. Excessively verbose answersthat stray off point may be penalized.

a. (4 pts) Purpose of .h files:

b. (4 pts) .h files relationship to .cpp files:

c. (4 pts) Purpose of .o files:

d. (4 pts) .o files relationship to .cpp files.

e. (4 pts) Purpose of Makefile:

f. (4 pts) Relationship of Makefile to .cpp files:

Page 207: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

struct Node { int data; Node *next;} void printList(Node *head) { for (Node *p=head; p!=NULL; p=p->next) { cout << p->data << endl; }}

7Exam #156 Page: 7 Name: _____________________________________

156

5. At right is a fairly common definition fora C++ struct Node that can be used tomake a linked list of int values, along witha conventional implementation of afunction that prints the value of the linkedlist, one per line. As a homeworkassignment, you were asked to rewrite thefunction as a recursive function, i.e. to dothe same thing as this iterative version,but using recursion. BUT THAT'S NOTWHAT I'M ASKING YOU TO DO ONTHIS EXAM. So read carefully.

a. (10 pts) Write the definition of aC++ function calledprintListBackwards that also takes a Node *head as its parameter, and prints the list backwards.Given that the struct Node only has next pointers and no prev pointers, you might think this isimpossible, but with recursion is not only possible, it is trivially easy. (Well, if you understand recursion itis.)

HINT: If you are stuck, start by writing out the recursive version of printList which prints the listforwards using recursion. Then think about how you could tweak the function to print the list backwardsinstead.

THERE IS ONE MORE PROBLEM ON THE FINAL PAGE!

Page 208: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

8 Exam #156 Page: 8 Name:_____________________________________

156

b. (6 pts) Given that there are no prev pointers, there is no straightforward way to print the list backwardswithout iteration that doesn't involve storing some amount of temporary data that is the same size as the listitself. For example, go might go through the list in the forward direction, and either store the data from thenodes in an array which you then iterate through backwards, or in another linked list that is built in theopposite diretion.

So how is it that this is possible with recursion? What is happening "under the hood" that makes thispossible? Briefly explain.

Hint: "activation record".

End of Examtotal points=100

Page 209: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

1Exam #157 Page: 1 Name: _____________________________________

157

CS32—Midterm ExamE01, W15, Phill Conrad, UC Santa BarbaraWednesday, 04/30/2015, 9:30am­10:45am

Name: ___________________________________________________

Umail Address: ______________________________@ umail.ucsb.edu

Please write your name above AND AT THE TOP OF EVERY PAGEBe sure you turn in every page of this exam.

Each exam is numbered (e.g. Exam #137).Each pages is numbered (e.g. Page 1, Page 2, etc.)The last page clearly says "End of Exam".

This exam is closed book, closed notes, closed mouth, cell phone offYou are permitted one sheet of paper (max size 8.5x11") on which to write notesThese sheets will be collected with the exam, and might not be returnedPlease write your name on your notes sheet

Page 210: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

2Exam #157 Page: 2 Name: _____________________________________

157

1. For these questions, assume 8-bit two's complement representation of negative integers. The left-most bit is the signbit, with 1 representing negative numbers, and 0 representing positive numbers.

a. (2 pts) Given the decimal number -96,what is this number's binary representation in 8-bit two's complement?

b. (2 pts) Given the decimal number -76,what is this number's binary representation in 8-bit two's complement?

c. (2 pts) Given the decimal number -4,what is this number's binary representation in 8-bit two's complement?

d. (2 pts) Given that 10101011 is the 8-bit two's complement representation of a number,what is that number in base ten?

e. (2 pts) Given that 10001001 is the 8-bit two's complement representation of a number,what is that number in base ten?

f. (2 pts) Given that 11111001 is the 8-bit two's complement representation of a number,what is that number in base ten?

Page 211: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

3Exam #157 Page: 3 Name: _____________________________________

157

2. Suppose you have an array called a full of n integer values, indexed 0 through n-1. For simplicity, suppose there areno duplicates. You need to implement a function to return the index of a certain key value k if it occurs in the array,or -1 if it does not.

As we've discussed, two possible techniques are linear search (which our textbook calls serial search, and binarysearch.

a. (6 pts) Binary search places one additional requirement on the elements of the array. What is this additionalrequirement? It can be stated in a single sentence.

b. (6 pts) Assuming that the array a meets this additional requirement, describe how to apply the binary searchalgorithm to this problem. Be clear, precise, and concise. DO NOT WRITE CODE OR PSEUDOCODE.Instead, describe the main idea of the algorithm in plain english. Though it is not required, if you wish, youmay make reference to a, n and k in your description.

c. (6 pts) Linear search has the advantage of not having this extra requirement, and is much easier to code andimplement correctly, but has a serious drawback as compared to binary search. Explain what that is. Again, itcan be stated in a single sentence—but for full credit, you must be as precise as possible in your answer.

d. (6 pts) Assuming that the array a does not meet the requirements for binary search, describe how to apply thelinear search algorithm to this problem. Be clear, precise, and concise. DO NOT WRITE CODE ORPSEUDOCODE. Instead, describe the main idea of the algorithm in plain english. Though it is not required,if you wish, you may make reference to a, n and k in your description.

Page 212: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

4Exam #157 Page: 4 Name: _____________________________________

157

3. So far, our discussion of sorting has focused on two main sorting methods: insertion sort, and selection sort. Both ofthese can be implemented as an "in place" sort—one where the values are not copied anywhere outside the array,except to a single temporary variable.

As we've discussed, both of these sorting techniques can be implemented "in place" as successive passes, where thesorted array is built up at one end of the array or the other, in a series of n-1 steps. Our practice examples havefocussed on doing insertion sort where the sorted array is built left to right, and on selection sort, where the sortedarray is built right to left—but this is not the only possible implementation.

For each of the tables below, fill in the successive steps of the algorithm shown. The first two match what we'vedone before. The second two check whether you can adapt your understanding of how selection sort and insertionwork to a novel situation.

Grading for parts (a,b): ­1 for each incorrect entry, up to max of ­8Grading for parts (c,d): ­1 for each incorrect entry, up to max of ­4

a. (8 pts) Sort using insertion sort, building sorted array at start of array (at left, the way we've done it before):

[0] [1] [2] [3] [4]33 29 48 17 6

         

         

         

6 17 29 33 48

b. (8 pts) Sort using selection sort, building sorted array at end of array (at right, the way we've done it before.):

[0] [1] [2] [3] [4]33 29 48 17 6

         

         

         

6 17 29 33 48

Page 213: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

5 Exam #157 Page: 5 Name:_____________________________________

157

c. (4 pts) Sort using insertion sort, building sorted array at END of array (at right, the OPPOSITE of the waywe've done it before, but still using the approach used in insertion sort.):

[0] [1] [2] [3] [4]33 29 48 17 6

         

         

         

6 17 29 33 48

d. (4 pts) Sort using selection sort, building sorted array at START of array (at left, the OPPOSITE of the waywe've done it before, but still using the approach used in selection sort.):

[0] [1] [2] [3] [4]33 29 48 17 6

         

         

         

6 17 29 33 48

Page 214: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

6Exam #157 Page: 6 Name: _____________________________________

157

4. Most of the code we write in this course goes in files that end in .cpp. >But sometimes we worked with each of thefollowing types of files. For each type, explain what its purpose is, and its relationship to .cpp files.

DON'T USE TOO MANY WORDS. Write just enough to get the main point across. Excessively verbose answersthat stray off point may be penalized.

a. (4 pts) Purpose of .h files:

b. (4 pts) .h files relationship to .cpp files:

c. (4 pts) Purpose of .o files:

d. (4 pts) .o files relationship to .cpp files.

e. (4 pts) Purpose of Makefile:

f. (4 pts) Relationship of Makefile to .cpp files:

Page 215: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

struct Node { int data; Node *next;} void printList(Node *head) { for (Node *p=head; p!=NULL; p=p->next) { cout << p->data << endl; }}

7Exam #157 Page: 7 Name: _____________________________________

157

5. At right is a fairly common definition fora C++ struct Node that can be used tomake a linked list of int values, along witha conventional implementation of afunction that prints the value of the linkedlist, one per line. As a homeworkassignment, you were asked to rewrite thefunction as a recursive function, i.e. to dothe same thing as this iterative version,but using recursion. BUT THAT'S NOTWHAT I'M ASKING YOU TO DO ONTHIS EXAM. So read carefully.

a. (10 pts) Write the definition of aC++ function calledprintListBackwards that also takes a Node *head as its parameter, and prints the list backwards.Given that the struct Node only has next pointers and no prev pointers, you might think this isimpossible, but with recursion is not only possible, it is trivially easy. (Well, if you understand recursion itis.)

HINT: If you are stuck, start by writing out the recursive version of printList which prints the listforwards using recursion. Then think about how you could tweak the function to print the list backwardsinstead.

THERE IS ONE MORE PROBLEM ON THE FINAL PAGE!

Page 216: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

8 Exam #157 Page: 8 Name:_____________________________________

157

b. (6 pts) Given that there are no prev pointers, there is no straightforward way to print the list backwardswithout iteration that doesn't involve storing some amount of temporary data that is the same size as the listitself. For example, go might go through the list in the forward direction, and either store the data from thenodes in an array which you then iterate through backwards, or in another linked list that is built in theopposite diretion.

So how is it that this is possible with recursion? What is happening "under the hood" that makes thispossible? Briefly explain.

Hint: "activation record".

End of Examtotal points=100

Page 217: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

1Exam #158 Page: 1 Name: _____________________________________

158

CS32—Midterm ExamE01, W15, Phill Conrad, UC Santa BarbaraWednesday, 04/30/2015, 9:30am­10:45am

Name: ___________________________________________________

Umail Address: ______________________________@ umail.ucsb.edu

Please write your name above AND AT THE TOP OF EVERY PAGEBe sure you turn in every page of this exam.

Each exam is numbered (e.g. Exam #137).Each pages is numbered (e.g. Page 1, Page 2, etc.)The last page clearly says "End of Exam".

This exam is closed book, closed notes, closed mouth, cell phone offYou are permitted one sheet of paper (max size 8.5x11") on which to write notesThese sheets will be collected with the exam, and might not be returnedPlease write your name on your notes sheet

Page 218: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

2Exam #158 Page: 2 Name: _____________________________________

158

1. For these questions, assume 8-bit two's complement representation of negative integers. The left-most bit is the signbit, with 1 representing negative numbers, and 0 representing positive numbers.

a. (2 pts) Given the decimal number -96,what is this number's binary representation in 8-bit two's complement?

b. (2 pts) Given the decimal number -100,what is this number's binary representation in 8-bit two's complement?

c. (2 pts) Given the decimal number -67,what is this number's binary representation in 8-bit two's complement?

d. (2 pts) Given that 11011110 is the 8-bit two's complement representation of a number,what is that number in base ten?

e. (2 pts) Given that 11100100 is the 8-bit two's complement representation of a number,what is that number in base ten?

f. (2 pts) Given that 10010001 is the 8-bit two's complement representation of a number,what is that number in base ten?

Page 219: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

3Exam #158 Page: 3 Name: _____________________________________

158

2. Suppose you have an array called a full of n integer values, indexed 0 through n-1. For simplicity, suppose there areno duplicates. You need to implement a function to return the index of a certain key value k if it occurs in the array,or -1 if it does not.

As we've discussed, two possible techniques are linear search (which our textbook calls serial search, and binarysearch.

a. (6 pts) Binary search places one additional requirement on the elements of the array. What is this additionalrequirement? It can be stated in a single sentence.

b. (6 pts) Assuming that the array a meets this additional requirement, describe how to apply the binary searchalgorithm to this problem. Be clear, precise, and concise. DO NOT WRITE CODE OR PSEUDOCODE.Instead, describe the main idea of the algorithm in plain english. Though it is not required, if you wish, youmay make reference to a, n and k in your description.

c. (6 pts) Linear search has the advantage of not having this extra requirement, and is much easier to code andimplement correctly, but has a serious drawback as compared to binary search. Explain what that is. Again, itcan be stated in a single sentence—but for full credit, you must be as precise as possible in your answer.

d. (6 pts) Assuming that the array a does not meet the requirements for binary search, describe how to apply thelinear search algorithm to this problem. Be clear, precise, and concise. DO NOT WRITE CODE ORPSEUDOCODE. Instead, describe the main idea of the algorithm in plain english. Though it is not required,if you wish, you may make reference to a, n and k in your description.

Page 220: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

4Exam #158 Page: 4 Name: _____________________________________

158

3. So far, our discussion of sorting has focused on two main sorting methods: insertion sort, and selection sort. Both ofthese can be implemented as an "in place" sort—one where the values are not copied anywhere outside the array,except to a single temporary variable.

As we've discussed, both of these sorting techniques can be implemented "in place" as successive passes, where thesorted array is built up at one end of the array or the other, in a series of n-1 steps. Our practice examples havefocussed on doing insertion sort where the sorted array is built left to right, and on selection sort, where the sortedarray is built right to left—but this is not the only possible implementation.

For each of the tables below, fill in the successive steps of the algorithm shown. The first two match what we'vedone before. The second two check whether you can adapt your understanding of how selection sort and insertionwork to a novel situation.

Grading for parts (a,b): ­1 for each incorrect entry, up to max of ­8Grading for parts (c,d): ­1 for each incorrect entry, up to max of ­4

a. (8 pts) Sort using insertion sort, building sorted array at start of array (at left, the way we've done it before):

[0] [1] [2] [3] [4]33 29 48 17 6

         

         

         

6 17 29 33 48

b. (8 pts) Sort using selection sort, building sorted array at end of array (at right, the way we've done it before.):

[0] [1] [2] [3] [4]33 29 48 17 6

         

         

         

6 17 29 33 48

Page 221: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

5 Exam #158 Page: 5 Name:_____________________________________

158

c. (4 pts) Sort using insertion sort, building sorted array at END of array (at right, the OPPOSITE of the waywe've done it before, but still using the approach used in insertion sort.):

[0] [1] [2] [3] [4]33 29 48 17 6

         

         

         

6 17 29 33 48

d. (4 pts) Sort using selection sort, building sorted array at START of array (at left, the OPPOSITE of the waywe've done it before, but still using the approach used in selection sort.):

[0] [1] [2] [3] [4]33 29 48 17 6

         

         

         

6 17 29 33 48

Page 222: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

6Exam #158 Page: 6 Name: _____________________________________

158

4. Most of the code we write in this course goes in files that end in .cpp. >But sometimes we worked with each of thefollowing types of files. For each type, explain what its purpose is, and its relationship to .cpp files.

DON'T USE TOO MANY WORDS. Write just enough to get the main point across. Excessively verbose answersthat stray off point may be penalized.

a. (4 pts) Purpose of .h files:

b. (4 pts) .h files relationship to .cpp files:

c. (4 pts) Purpose of .o files:

d. (4 pts) .o files relationship to .cpp files.

e. (4 pts) Purpose of Makefile:

f. (4 pts) Relationship of Makefile to .cpp files:

Page 223: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

struct Node { int data; Node *next;} void printList(Node *head) { for (Node *p=head; p!=NULL; p=p->next) { cout << p->data << endl; }}

7Exam #158 Page: 7 Name: _____________________________________

158

5. At right is a fairly common definition fora C++ struct Node that can be used tomake a linked list of int values, along witha conventional implementation of afunction that prints the value of the linkedlist, one per line. As a homeworkassignment, you were asked to rewrite thefunction as a recursive function, i.e. to dothe same thing as this iterative version,but using recursion. BUT THAT'S NOTWHAT I'M ASKING YOU TO DO ONTHIS EXAM. So read carefully.

a. (10 pts) Write the definition of aC++ function calledprintListBackwards that also takes a Node *head as its parameter, and prints the list backwards.Given that the struct Node only has next pointers and no prev pointers, you might think this isimpossible, but with recursion is not only possible, it is trivially easy. (Well, if you understand recursion itis.)

HINT: If you are stuck, start by writing out the recursive version of printList which prints the listforwards using recursion. Then think about how you could tweak the function to print the list backwardsinstead.

THERE IS ONE MORE PROBLEM ON THE FINAL PAGE!

Page 224: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

8 Exam #158 Page: 8 Name:_____________________________________

158

b. (6 pts) Given that there are no prev pointers, there is no straightforward way to print the list backwardswithout iteration that doesn't involve storing some amount of temporary data that is the same size as the listitself. For example, go might go through the list in the forward direction, and either store the data from thenodes in an array which you then iterate through backwards, or in another linked list that is built in theopposite diretion.

So how is it that this is possible with recursion? What is happening "under the hood" that makes thispossible? Briefly explain.

Hint: "activation record".

End of Examtotal points=100

Page 225: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

1Exam #159 Page: 1 Name: _____________________________________

159

CS32—Midterm ExamE01, W15, Phill Conrad, UC Santa BarbaraWednesday, 04/30/2015, 9:30am­10:45am

Name: ___________________________________________________

Umail Address: ______________________________@ umail.ucsb.edu

Please write your name above AND AT THE TOP OF EVERY PAGEBe sure you turn in every page of this exam.

Each exam is numbered (e.g. Exam #137).Each pages is numbered (e.g. Page 1, Page 2, etc.)The last page clearly says "End of Exam".

This exam is closed book, closed notes, closed mouth, cell phone offYou are permitted one sheet of paper (max size 8.5x11") on which to write notesThese sheets will be collected with the exam, and might not be returnedPlease write your name on your notes sheet

Page 226: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

2Exam #159 Page: 2 Name: _____________________________________

159

1. For these questions, assume 8-bit two's complement representation of negative integers. The left-most bit is the signbit, with 1 representing negative numbers, and 0 representing positive numbers.

a. (2 pts) Given the decimal number -96,what is this number's binary representation in 8-bit two's complement?

b. (2 pts) Given the decimal number -7,what is this number's binary representation in 8-bit two's complement?

c. (2 pts) Given the decimal number -89,what is this number's binary representation in 8-bit two's complement?

d. (2 pts) Given that 11111000 is the 8-bit two's complement representation of a number,what is that number in base ten?

e. (2 pts) Given that 10011011 is the 8-bit two's complement representation of a number,what is that number in base ten?

f. (2 pts) Given that 10110100 is the 8-bit two's complement representation of a number,what is that number in base ten?

Page 227: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

3Exam #159 Page: 3 Name: _____________________________________

159

2. Suppose you have an array called a full of n integer values, indexed 0 through n-1. For simplicity, suppose there areno duplicates. You need to implement a function to return the index of a certain key value k if it occurs in the array,or -1 if it does not.

As we've discussed, two possible techniques are linear search (which our textbook calls serial search, and binarysearch.

a. (6 pts) Binary search places one additional requirement on the elements of the array. What is this additionalrequirement? It can be stated in a single sentence.

b. (6 pts) Assuming that the array a meets this additional requirement, describe how to apply the binary searchalgorithm to this problem. Be clear, precise, and concise. DO NOT WRITE CODE OR PSEUDOCODE.Instead, describe the main idea of the algorithm in plain english. Though it is not required, if you wish, youmay make reference to a, n and k in your description.

c. (6 pts) Linear search has the advantage of not having this extra requirement, and is much easier to code andimplement correctly, but has a serious drawback as compared to binary search. Explain what that is. Again, itcan be stated in a single sentence—but for full credit, you must be as precise as possible in your answer.

d. (6 pts) Assuming that the array a does not meet the requirements for binary search, describe how to apply thelinear search algorithm to this problem. Be clear, precise, and concise. DO NOT WRITE CODE ORPSEUDOCODE. Instead, describe the main idea of the algorithm in plain english. Though it is not required,if you wish, you may make reference to a, n and k in your description.

Page 228: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

4Exam #159 Page: 4 Name: _____________________________________

159

3. So far, our discussion of sorting has focused on two main sorting methods: insertion sort, and selection sort. Both ofthese can be implemented as an "in place" sort—one where the values are not copied anywhere outside the array,except to a single temporary variable.

As we've discussed, both of these sorting techniques can be implemented "in place" as successive passes, where thesorted array is built up at one end of the array or the other, in a series of n-1 steps. Our practice examples havefocussed on doing insertion sort where the sorted array is built left to right, and on selection sort, where the sortedarray is built right to left—but this is not the only possible implementation.

For each of the tables below, fill in the successive steps of the algorithm shown. The first two match what we'vedone before. The second two check whether you can adapt your understanding of how selection sort and insertionwork to a novel situation.

Grading for parts (a,b): ­1 for each incorrect entry, up to max of ­8Grading for parts (c,d): ­1 for each incorrect entry, up to max of ­4

a. (8 pts) Sort using insertion sort, building sorted array at start of array (at left, the way we've done it before):

[0] [1] [2] [3] [4]33 29 48 17 6

         

         

         

6 17 29 33 48

b. (8 pts) Sort using selection sort, building sorted array at end of array (at right, the way we've done it before.):

[0] [1] [2] [3] [4]33 29 48 17 6

         

         

         

6 17 29 33 48

Page 229: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

5 Exam #159 Page: 5 Name:_____________________________________

159

c. (4 pts) Sort using insertion sort, building sorted array at END of array (at right, the OPPOSITE of the waywe've done it before, but still using the approach used in insertion sort.):

[0] [1] [2] [3] [4]33 29 48 17 6

         

         

         

6 17 29 33 48

d. (4 pts) Sort using selection sort, building sorted array at START of array (at left, the OPPOSITE of the waywe've done it before, but still using the approach used in selection sort.):

[0] [1] [2] [3] [4]33 29 48 17 6

         

         

         

6 17 29 33 48

Page 230: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

6Exam #159 Page: 6 Name: _____________________________________

159

4. Most of the code we write in this course goes in files that end in .cpp. >But sometimes we worked with each of thefollowing types of files. For each type, explain what its purpose is, and its relationship to .cpp files.

DON'T USE TOO MANY WORDS. Write just enough to get the main point across. Excessively verbose answersthat stray off point may be penalized.

a. (4 pts) Purpose of .h files:

b. (4 pts) .h files relationship to .cpp files:

c. (4 pts) Purpose of .o files:

d. (4 pts) .o files relationship to .cpp files.

e. (4 pts) Purpose of Makefile:

f. (4 pts) Relationship of Makefile to .cpp files:

Page 231: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

struct Node { int data; Node *next;} void printList(Node *head) { for (Node *p=head; p!=NULL; p=p->next) { cout << p->data << endl; }}

7Exam #159 Page: 7 Name: _____________________________________

159

5. At right is a fairly common definition fora C++ struct Node that can be used tomake a linked list of int values, along witha conventional implementation of afunction that prints the value of the linkedlist, one per line. As a homeworkassignment, you were asked to rewrite thefunction as a recursive function, i.e. to dothe same thing as this iterative version,but using recursion. BUT THAT'S NOTWHAT I'M ASKING YOU TO DO ONTHIS EXAM. So read carefully.

a. (10 pts) Write the definition of aC++ function calledprintListBackwards that also takes a Node *head as its parameter, and prints the list backwards.Given that the struct Node only has next pointers and no prev pointers, you might think this isimpossible, but with recursion is not only possible, it is trivially easy. (Well, if you understand recursion itis.)

HINT: If you are stuck, start by writing out the recursive version of printList which prints the listforwards using recursion. Then think about how you could tweak the function to print the list backwardsinstead.

THERE IS ONE MORE PROBLEM ON THE FINAL PAGE!

Page 232: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

8 Exam #159 Page: 8 Name:_____________________________________

159

b. (6 pts) Given that there are no prev pointers, there is no straightforward way to print the list backwardswithout iteration that doesn't involve storing some amount of temporary data that is the same size as the listitself. For example, go might go through the list in the forward direction, and either store the data from thenodes in an array which you then iterate through backwards, or in another linked list that is built in theopposite diretion.

So how is it that this is possible with recursion? What is happening "under the hood" that makes thispossible? Briefly explain.

Hint: "activation record".

End of Examtotal points=100

Page 233: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

1Exam #160 Page: 1 Name: _____________________________________

160

CS32—Midterm ExamE01, W15, Phill Conrad, UC Santa BarbaraWednesday, 04/30/2015, 9:30am­10:45am

Name: ___________________________________________________

Umail Address: ______________________________@ umail.ucsb.edu

Please write your name above AND AT THE TOP OF EVERY PAGEBe sure you turn in every page of this exam.

Each exam is numbered (e.g. Exam #137).Each pages is numbered (e.g. Page 1, Page 2, etc.)The last page clearly says "End of Exam".

This exam is closed book, closed notes, closed mouth, cell phone offYou are permitted one sheet of paper (max size 8.5x11") on which to write notesThese sheets will be collected with the exam, and might not be returnedPlease write your name on your notes sheet

Page 234: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

2Exam #160 Page: 2 Name: _____________________________________

160

1. For these questions, assume 8-bit two's complement representation of negative integers. The left-most bit is the signbit, with 1 representing negative numbers, and 0 representing positive numbers.

a. (2 pts) Given the decimal number -95,what is this number's binary representation in 8-bit two's complement?

b. (2 pts) Given the decimal number -1,what is this number's binary representation in 8-bit two's complement?

c. (2 pts) Given the decimal number -124,what is this number's binary representation in 8-bit two's complement?

d. (2 pts) Given that 10100110 is the 8-bit two's complement representation of a number,what is that number in base ten?

e. (2 pts) Given that 10001110 is the 8-bit two's complement representation of a number,what is that number in base ten?

f. (2 pts) Given that 11000000 is the 8-bit two's complement representation of a number,what is that number in base ten?

Page 235: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

3Exam #160 Page: 3 Name: _____________________________________

160

2. Suppose you have an array called a full of n integer values, indexed 0 through n-1. For simplicity, suppose there areno duplicates. You need to implement a function to return the index of a certain key value k if it occurs in the array,or -1 if it does not.

As we've discussed, two possible techniques are linear search (which our textbook calls serial search, and binarysearch.

a. (6 pts) Binary search places one additional requirement on the elements of the array. What is this additionalrequirement? It can be stated in a single sentence.

b. (6 pts) Assuming that the array a meets this additional requirement, describe how to apply the binary searchalgorithm to this problem. Be clear, precise, and concise. DO NOT WRITE CODE OR PSEUDOCODE.Instead, describe the main idea of the algorithm in plain english. Though it is not required, if you wish, youmay make reference to a, n and k in your description.

c. (6 pts) Linear search has the advantage of not having this extra requirement, and is much easier to code andimplement correctly, but has a serious drawback as compared to binary search. Explain what that is. Again, itcan be stated in a single sentence—but for full credit, you must be as precise as possible in your answer.

d. (6 pts) Assuming that the array a does not meet the requirements for binary search, describe how to apply thelinear search algorithm to this problem. Be clear, precise, and concise. DO NOT WRITE CODE ORPSEUDOCODE. Instead, describe the main idea of the algorithm in plain english. Though it is not required,if you wish, you may make reference to a, n and k in your description.

Page 236: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

4Exam #160 Page: 4 Name: _____________________________________

160

3. So far, our discussion of sorting has focused on two main sorting methods: insertion sort, and selection sort. Both ofthese can be implemented as an "in place" sort—one where the values are not copied anywhere outside the array,except to a single temporary variable.

As we've discussed, both of these sorting techniques can be implemented "in place" as successive passes, where thesorted array is built up at one end of the array or the other, in a series of n-1 steps. Our practice examples havefocussed on doing insertion sort where the sorted array is built left to right, and on selection sort, where the sortedarray is built right to left—but this is not the only possible implementation.

For each of the tables below, fill in the successive steps of the algorithm shown. The first two match what we'vedone before. The second two check whether you can adapt your understanding of how selection sort and insertionwork to a novel situation.

Grading for parts (a,b): ­1 for each incorrect entry, up to max of ­8Grading for parts (c,d): ­1 for each incorrect entry, up to max of ­4

a. (8 pts) Sort using insertion sort, building sorted array at start of array (at left, the way we've done it before):

[0] [1] [2] [3] [4]33 29 48 17 6

         

         

         

6 17 29 33 48

b. (8 pts) Sort using selection sort, building sorted array at end of array (at right, the way we've done it before.):

[0] [1] [2] [3] [4]33 29 48 17 6

         

         

         

6 17 29 33 48

Page 237: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

5 Exam #160 Page: 5 Name:_____________________________________

160

c. (4 pts) Sort using insertion sort, building sorted array at END of array (at right, the OPPOSITE of the waywe've done it before, but still using the approach used in insertion sort.):

[0] [1] [2] [3] [4]33 29 48 17 6

         

         

         

6 17 29 33 48

d. (4 pts) Sort using selection sort, building sorted array at START of array (at left, the OPPOSITE of the waywe've done it before, but still using the approach used in selection sort.):

[0] [1] [2] [3] [4]33 29 48 17 6

         

         

         

6 17 29 33 48

Page 238: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

6Exam #160 Page: 6 Name: _____________________________________

160

4. Most of the code we write in this course goes in files that end in .cpp. >But sometimes we worked with each of thefollowing types of files. For each type, explain what its purpose is, and its relationship to .cpp files.

DON'T USE TOO MANY WORDS. Write just enough to get the main point across. Excessively verbose answersthat stray off point may be penalized.

a. (4 pts) Purpose of .h files:

b. (4 pts) .h files relationship to .cpp files:

c. (4 pts) Purpose of .o files:

d. (4 pts) .o files relationship to .cpp files.

e. (4 pts) Purpose of Makefile:

f. (4 pts) Relationship of Makefile to .cpp files:

Page 239: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

struct Node { int data; Node *next;} void printList(Node *head) { for (Node *p=head; p!=NULL; p=p->next) { cout << p->data << endl; }}

7Exam #160 Page: 7 Name: _____________________________________

160

5. At right is a fairly common definition fora C++ struct Node that can be used tomake a linked list of int values, along witha conventional implementation of afunction that prints the value of the linkedlist, one per line. As a homeworkassignment, you were asked to rewrite thefunction as a recursive function, i.e. to dothe same thing as this iterative version,but using recursion. BUT THAT'S NOTWHAT I'M ASKING YOU TO DO ONTHIS EXAM. So read carefully.

a. (10 pts) Write the definition of aC++ function calledprintListBackwards that also takes a Node *head as its parameter, and prints the list backwards.Given that the struct Node only has next pointers and no prev pointers, you might think this isimpossible, but with recursion is not only possible, it is trivially easy. (Well, if you understand recursion itis.)

HINT: If you are stuck, start by writing out the recursive version of printList which prints the listforwards using recursion. Then think about how you could tweak the function to print the list backwardsinstead.

THERE IS ONE MORE PROBLEM ON THE FINAL PAGE!

Page 240: CS32—Midterm Exam - cs.ucsb.edupconrad/cs32/15S/exams/E01/pdf/131-160... · CS32—Midterm Exam E01, W15, Phill Conrad, UC Santa Barbara Wednesday, 04/30/2015, 9:30am10:45am Name

8 Exam #160 Page: 8 Name:_____________________________________

160

b. (6 pts) Given that there are no prev pointers, there is no straightforward way to print the list backwardswithout iteration that doesn't involve storing some amount of temporary data that is the same size as the listitself. For example, go might go through the list in the forward direction, and either store the data from thenodes in an array which you then iterate through backwards, or in another linked list that is built in theopposite diretion.

So how is it that this is possible with recursion? What is happening "under the hood" that makes thispossible? Briefly explain.

Hint: "activation record".

End of Examtotal points=100