This shows you the differences between two versions of the page.
haas:fall2019:c4eng:projects:eoce [2019/11/11 18:40] – external edit 127.0.0.1 | haas:fall2019:c4eng:projects:eoce [2019/11/13 18:05] (current) – wedge | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | <WRAP centeralign round box> | + | at the bottom |
- | < | + | |
- | < | + | |
- | <fs 125%>End of Course Experience</ | + | |
- | </ | + | |
- | ======EoCE====== | + | |
- | + | ||
- | =====Rules===== | + | |
- | Presented within will be various questions evaluating your knowledge and experience gained this semester. In places where you are able, the more you write and explain topics the better the chance you will have of receiving full credit (and alternatively, | + | |
- | + | ||
- | Unless otherwise specified, the questions on this experience are open resource with the exception of other individuals. In that respect, it is **CLOSED PERSON**. This means you are not to communicate with other people (either in the class or otherwise), in real life or electronically. Use your own knowledge, use your own skills, and use your own ability to access the allowed resources to aid you in coming up with your well thought out responses to each question. | + | |
- | + | ||
- | You are allowed, and expected, to seek clarification on any question by asking any of the tutors or me. But the aim here is to evaluate what you have learned, so do not expect tutoring. Any help should be prompted by a well-asked question. Any reply (if possible) from a tutor, should also be in the form of a question. | + | |
- | + | ||
- | You are to do **all** items. Submission is to be as follows: | + | |
- | * an organized and easy to read presentation of information on your EoCE wiki page. | + | |
- | * if applicable, a supplemental archive submitted using the **submit** tool (likely via Makefile) | + | |
- | + | ||
- | The EoCE is worth 26 points of your overall grade (projects + participation + journal + eoce = 104), representing a distinct fourth category within the grading policy of the course (Projects, Journal, Participation, | + | |
- | + | ||
- | ====Finals Week Availability==== | + | |
- | While some classes are allocated a specific meeting time during finals week, I make all such times available should you be free and have questions. As such, finals week in **CHM123** will look something like this: | + | |
- | + | ||
- | * Monday, | + | |
- | * Tuesday, | + | |
- | * Wednesday, | + | |
- | + | ||
- | **DEADLINE FOR SUBMISSION: | + | |
- | + | ||
- | Good luck! | + | |
- | + | ||
- | =====C4ENG===== | + | |
- | + | ||
- | ====Obtain the EoCE project==== | + | |
- | In order to perform this end of course experience, you will need to obtain a copy of the **eoce** project, located on lab46. | + | |
- | + | ||
- | ===Obtain EoCE=== | + | |
- | Okay, you're ready to tackle **eoce**, please log into lab46, go into the directory where you've been organizing your course work, and do the following: | + | |
- | + | ||
- | < | + | |
- | lab46: | + | |
- | ... | + | |
- | </ | + | |
- | + | ||
- | You should now have an **eoce/** subdirectory, | + | |
- | + | ||
- | **NOTE:** It is important that you keep the project directory named **eoce**; changing its name will break some of the automated functionality making your life easier. | + | |
- | + | ||
- | ===Change into your eoce project directory=== | + | |
- | Once copied, you can now change into your project directory, by doing the following: | + | |
- | + | ||
- | < | + | |
- | lab46: | + | |
- | lab46: | + | |
- | </ | + | |
- | + | ||
- | ===Using the Makefile=== | + | |
- | In the base of the eoce project directory is a Makefile which will automate some tasks for you (specifically, | + | |
- | + | ||
- | To see what options are available, run " | + | |
- | + | ||
- | Additionally, | + | |
- | + | ||
- | ====Access the Electronics Kit resources==== | + | |
- | Your electrics kits have a set of documentation available: | + | |
- | + | ||
- | * https:// | + | |
- | + | ||
- | Various bits, from datasheets for some of the components to tutorials. | + | |
- | + | ||
- | For some of your activities here, you will want to download and open up the **Tutorial.pdf** file. | + | |
- | + | ||
- | ====0x0: Raspberry Pi electronics circuit==== | + | |
- | In the Freenove tutorial, I would like you to select a circuit to set up and implement the program to test its operation. Pick one of the following chapters: | + | |
- | + | ||
- | * Chapter 9: Potentiometer and RGBLED | + | |
- | * Chapter 10: Photoresistor and LED | + | |
- | * Chapter 11: Thermistor | + | |
- | * Chapter 12: Joystick | + | |
- | + | ||
- | Wiring up the circuit, and use the provided C program to ensure its operation. | + | |
- | + | ||
- | Identify which one you've chosen, and what neat insights you gained from the experience. Document this information in the **0x0/** subdirectory. | + | |
- | + | ||
- | Show me your working setup when you've got it. | + | |
- | + | ||
- | ====0x1: Another Raspberry Pi electronics circuit==== | + | |
- | In the Freenove tutorial, I would like you to select another circuit to set up and implement a program to test its operation. Pick one of the following chapters: | + | |
- | + | ||
- | * Chapter 13: Motor and Driver | + | |
- | * Chapter 14: Relay and Motor | + | |
- | * Chapter 15: Servo | + | |
- | * Chapter 16: Stepping Motor | + | |
- | + | ||
- | Wiring up the circuit, and use the provided C program to ensure its operation. | + | |
- | + | ||
- | Identify which one you've chosen, and what neat insights you gained from the experience. Document this information in the **0x1/** subdirectory. | + | |
- | + | ||
- | Show me your working setup when you've got it. | + | |
- | + | ||
- | ====0x2: Make me something cool==== | + | |
- | Using the kit and Freenove tutorial, build me a circuit and write a program that is NOT exactly something found in the tutorial. It can be based on ideas from the tutorial, but bust be its own unique and distinct thing. | + | |
- | + | ||
- | Some suggestions: | + | |
- | + | ||
- | * " | + | |
- | * " | + | |
- | * LEDMatrix pong with joystick | + | |
- | * interface Matrix Keypad with one of your programs from this semester (to provide input). | + | |
- | + | ||
- | Wiring up your circuit, and and implement a program that drives this unique creation. | + | |
- | + | ||
- | Identify what you've chosen, and what neat insights you gained from the experience. | + | |
- | + | ||
- | Show me your working setup when you've got it. | + | |
- | + | ||
- | Place your completed program in the **0x2/** subdirectory for submission. | + | |
- | + | ||
- | ====0x3: Units of Measurement (electronic storage)==== | + | |
- | In the **0x3/** subdirectory: | + | |
- | + | ||
- | Based on the first letter of your last name (or the first letter of the last word of your last name, if hyphenated), | + | |
- | + | ||
- | * A, C, E, G, I, K, M, O, Q, S, U, W, Y: **units of data** | + | |
- | * B, D, F, H, J, L, N, P, R, T, V, X, Z: **units of length** | + | |
- | + | ||
- | ===Units of Data=== | + | |
- | In computing, we're constantly interacting with data and information. While these terms are frequently interchanged, | + | |
- | + | ||
- | The word " | + | |
- | + | ||
- | The word " | + | |
- | + | ||
- | For example, " | + | |
- | + | ||
- | Another defining characteristic of information is that we can use it to better communicate ideas. As there is no single perspective or point of reference on all information, | + | |
- | + | ||
- | Look around: information in the world is filled with units. We rely on units to convey information: | + | |
- | + | ||
- | And misunderstanding units can lead to miscommunication, | + | |
- | + | ||
- | In the realm of computing, we quantify our information in units of bits. Now, we seldom relate information in bits, but instead easier to manage units like bytes, kilobytes, megabytes, etc. | + | |
- | + | ||
- | At the simplest level, most of us understand that (at least in recent decades) 1 byte is equal to 8 bits. But so often, our typical storage capacities are huge and expressing them in just bytes would be rather unwieldy- instead we further simplify by using kilobytes, megabytes, gigabytes, etc. | + | |
- | + | ||
- | Using the metric system, we recognize the following prefixes: | + | |
- | + | ||
- | ^ prefix | + | |
- | | kilo | 1000 | | + | |
- | | mega | 1000000 | + | |
- | | giga | 1000000000 | + | |
- | | tera | 1000000000000 | + | |
- | + | ||
- | Historically, | + | |
- | + | ||
- | In recent years, the metric gestapo convinced the computing realm to similarly line up to even units of 10. Marketing people loved this, as they could now sell you a 1TB hard drive but there' | + | |
- | + | ||
- | To retain context, a new class of units were created to encapsulate the old 8-based byte storage. These received a lowercase " | + | |
- | + | ||
- | ^ prefix | + | |
- | | kibiByte (kiB) | 1024 | | + | |
- | | MibiByte (MiB) | 1024 * 1024 = 1048576 | + | |
- | | GibiByte (GiB) | 1024 * 1024 * 1024 = 1073741824 | + | |
- | | TibiByte (TiB) | 1024 * 1024 * 1024 * 1024 = 1099511627776 | + | |
- | + | ||
- | Put side by side, we see: | + | |
- | + | ||
- | ^ prefix | + | |
- | | kilobyte (kB) | 1000 bytes | | + | |
- | | kibiByte (kiB) | 1024 bytes | | + | |
- | | MegaByte (MB) | 1000 * 1000 = 1000000 bytes | | + | |
- | | MibiByte (MiB) | 1024 * 1024 = 1048576 bytes | | + | |
- | | GigaByte (GB) | 1000 * 1000 * 1000 = 1000000000 bytes | | + | |
- | | GibiByte (GiB) | 1024 * 1024 * 1024 = 1073741824 bytes | | + | |
- | + | ||
- | ===units=== | + | |
- | Your program will recognize at least the following units of length: | + | |
- | + | ||
- | * bits (smallest unit) | + | |
- | * bytes (1 byte == 8-bits) | + | |
- | * deka(bits|bytes) (D(b|B) -- groups of 10) | + | |
- | * dibi(bits|bytes) (Di(b|B) -- groups of 16) | + | |
- | * hecto(bits|bytes) (H(b|B) -- groups of 100 (10*10)) | + | |
- | * hibi(bits|bytes) (Hi(b|B) -- groups of 128 (16*8)) | + | |
- | * kilo(bits|bytes) (k(b|B) -- groups of 1000 (10*10*10)) | + | |
- | * kibi(bits|bytes) (ki(b|B) -- groups of 1024 (16*8*8)) | + | |
- | * Mega(bits|bytes) (M(b|B) -- 1000000) | + | |
- | * Mibi(bits|bytes) (Mi(b|B) -- 1024*1024) | + | |
- | * Giga(bits|bytes) (G(b|B) -- 1000*1000*1000) | + | |
- | * Gibi(bits|bytes) (Gi(b|B) -- 1024*1024*1024) | + | |
- | * Tera(bits|bytes) (T(b|B) -- 1000*1000*1000*1000) | + | |
- | * Tibi(bits|bytes) (Ti(b|B) -- 1024*1024*1024*1024) | + | |
- | + | ||
- | ===Units of Length=== | + | |
- | In the **0x3/** subdirectory: | + | |
- | + | ||
- | Just as with the units of measurement program above for electronic storage, there exist units in all kinds of information. | + | |
- | + | ||
- | Your task here is to write a program to convert between various length units. | + | |
- | + | ||
- | ===units=== | + | |
- | Your program will recognize at least the following units of length: | + | |
- | + | ||
- | ^ unit ^ description | + | |
- | | inch | 2.54 centimeters | + | |
- | | lea | 80 yards | | + | |
- | | foot | 12 inches | + | |
- | | yard | 3 feet | | + | |
- | | mile | 5280 feet | | + | |
- | | greek stadion | + | |
- | | roman foot | 295.7mm | + | |
- | | roman mile | 1617 yards | | + | |
- | | roman league | + | |
- | | league | + | |
- | | cubit | 18 inches | + | |
- | | meter | 1.09361 yards | | + | |
- | + | ||
- | The meter is available with the usual SI prefixes: | + | |
- | + | ||
- | ^ prefix | + | |
- | | (m) milli- | + | |
- | | < | + | |
- | | (d) deci- | 0.1 meters | + | |
- | | (D) deka- | 10 meters | + | |
- | | (h) hecto- | + | |
- | | (k) kilo- | 1000 meters | + | |
- | | (M) mega- | 1000000 meters | + | |
- | + | ||
- | ===Your task=== | + | |
- | Write a program that prompts the user for 3 pieces of input: | + | |
- | + | ||
- | - a number (which will be some form of the listed units you are working with) | + | |
- | - the unit of that number (any from the above in the list of units) | + | |
- | - the unit to convert that source input to (any from the above units). | + | |
- | + | ||
- | ===Example output, units of data=== | + | |
- | < | + | |
- | lab46: | + | |
- | Enter source value: 2048 | + | |
- | Enter source unit: kiB | + | |
- | Enter destination unit: Db | + | |
- | + | ||
- | 2048 kiB == 1677721.6000 Db | + | |
- | lab46: | + | |
- | </ | + | |
- | + | ||
- | ===Example output, units of length=== | + | |
- | < | + | |
- | lab46: | + | |
- | Enter source value: 300 | + | |
- | Enter source unit: cubit | + | |
- | Enter destination unit: dm | + | |
- | + | ||
- | 300 cubits == 1371.6041 decimeters | + | |
- | lab46: | + | |
- | </ | + | |
- | + | ||
- | ====0x4: Fun with Flags, again==== | + | |
- | In the **0x4/** subdirectory: | + | |
- | + | ||
- | Using the GD library, create a program that produces an image depicting the circular "13 star" early US flag (sometimes referred to as the "Betsy Ross" flag): | + | |
- | + | ||
- | {{: | + | |
- | + | ||
- | Of note, your implementation needs to: | + | |
- | + | ||
- | * make use of loops | + | |
- | * utilize arrays | + | |
- | * aside from fixed values for width and height of the overall image, rely predominantly on offsets and percentages | + | |
- | + | ||
- | Your implementation does not need to be an exact match (ie the stars do not have to line up in the same way), but it does have to resemble that particular flag. | + | |
- | + | ||
- | ====0x5: Fun with numbers==== | + | |
- | + | ||
- | In the **0x5/** subdirectory: | + | |
- | + | ||
- | Following will be the output of a program which I have not provided source code for. Your task is to recreate the necessary programming logic to produce identical output. | + | |
- | + | ||
- | Output must be generated by the program (you' | + | |
- | + | ||
- | ===Output=== | + | |
- | + | ||
- | < | + | |
- | 00000000 | + | |
- | 00000003 | + | |
- | 00000021 | + | |
- | 00000144 | + | |
- | 00000987 | + | |
- | 00006765 | + | |
- | 00046368 | + | |
- | 00317811 | + | |
- | </ | + | |
- | + | ||
- | You can use the provided **Makefile** to assist in program compilation; | + | |
- | + | ||
- | ===Questions=== | + | |
- | Please respond to the following: | + | |
- | + | ||
- | * Additionally, | + | |
- | * In words, describe the pattern taking place with these numbers. | + | |
- | * Does this pattern have a name? What is it? | + | |
- | + | ||
- | ====0x6: Grade Figure Outer-er==== | + | |
- | Throughout the semester, you've been accumulating points for your class participation, | + | |
- | + | ||
- | This information has been accessible via the **status** tool. | + | |
- | + | ||
- | Your task now is to write a program that accepts as input all the pertinent values from your status output, calculates your results, and displays them to the screen. | + | |
- | + | ||
- | Your program needs to do the following: | + | |
- | + | ||
- | * place each value into an array according to their category (projects, participation, | + | |
- | * there will be three categories (potentially three arrays): | + | |
- | * journal data (13% of grade) | + | |
- | * participation data (13% of grade) | + | |
- | * project data (52% of grade) | + | |
- | * once loaded into their arrays, calculate their totals, and totals out of grade component | + | |
- | * tally up all three, and print out the results | + | |
- | * calculate the current overall score, with a precision of 3 decimal places | + | |
- | * display the letter grade | + | |
- | + | ||
- | Letter grades are on the following scale: | + | |
- | + | ||
- | * A (100.00+) | + | |
- | * A- (94.00-99.99) | + | |
- | * B+ (88.00-93.99) | + | |
- | * B (82.00-87.99) | + | |
- | * B- (76.00-81.99) | + | |
- | * C+ (70.00-75.99) | + | |
- | * C (64.00-69.99) | + | |
- | * D (58.00-63.99) | + | |
- | * F ( 0.00-57.99) | + | |
- | + | ||
- | For purposes of array allocation, you may assume the quantities based on the evaluation of the week 12 deliverables (cos0/pctC, wcpC, and week12 journal). | + | |
- | + | ||
- | Final program output should resemble the following (note the formatting/ | + | |
- | + | ||
- | < | + | |
- | lab46: | + | |
- | Participation: | + | |
- | Journal: | + | |
- | | + | |
- | ------------------------------------- | + | |
- | Total: | + | |
- | ===================================== | + | |
- | Score: | + | |
- | Grade: | + | |
- | lab46: | + | |
- | </ | + | |
- | =====Submission===== | + | |
- | + | ||
- | ====EoCE document==== | + | |
- | All responses to questions, unless specifically indicated otherwise, should be addressed on this document (or the intended wiki document). | + | |
- | + | ||
- | Please edit the appropriate section and provide the necessary information. | + | |
- | + | ||
- | ====File Submission==== | + | |
- | For any other specific deliverables, | + | |
- | + | ||
- | < | + | |
- | lab46: | + | |
- | ... | + | |
- | </ | + | |
- | + | ||
- | If no formal project, you can submit requested files (preferably in an archive of their own), using the **submit** tool. A project called **eoce** has been likely set up for this purpose. | + |