Difference between revisions of "CSC111 Final Exam 2015"

From dftwiki3
Jump to: navigation, search
 
(23 intermediate revisions by the same user not shown)
Line 1: Line 1:
<onlydft>
 
  
 
<bluebox>
 
<bluebox>
 
This exam is a take-home exam given under the rules of the [http://www.smith.edu/sao/handbook/socialconduct/honorcode.php Smith College Honor-Code].  Please make sure you read it and understand it.   
 
This exam is a take-home exam given under the rules of the [http://www.smith.edu/sao/handbook/socialconduct/honorcode.php Smith College Honor-Code].  Please make sure you read it and understand it.   
 
<br />
 
<br />
The exam is open book, and open Web.
+
The exam is open book, open notes, and open Web.
 
<br />
 
<br />
You have to do the work individually.  You cannot seek help from anybody for this exam.  The TAs will not have TA hours, and will not be allowed to answer any questions relating to Python.  All questions relating to this Final should be directed to your instructor, and posted on Piazza.  Questions relating to python constructs, or debugging code will not be addressed, and should not be answered by other students.   Only questions intended to help clarify different parts of the exam will be answered.
+
You have to do the work '''individually'''.  You cannot seek help from anybody for this exam.  The TAs will not have consulting hours, and will not be allowed to answer questions relating to Python or the class material.  All questions relating to this Final should be directed to your instructor, and posted on Piazza.  Posts on piazza should not contain any code. Only questions meant to clarify the exam are allowed.  No debugging-related questions will be answered.  
 
<br />
 
<br />
The deadline for the exam is Friday,  '''May 8, at 4:00 p.m.'''   No extensions will be granted beyond this date and time.
+
The deadline for the exam is Friday,  ''May 8, at 4:00 p.m.''' While you are given 8 days on this exam, the programming should not take you more than a day, two at most, so organize your time well.  No extensions will be granted beyond the due date and time.
 
</bluebox>
 
</bluebox>
 
<br />
 
<br />
 
+
<onlydft>
 
=Problem 1=
 
=Problem 1=
 
<br />
 
<br />
Line 20: Line 19:
 
<br />
 
<br />
 
* Please download a new set of temperature-data files from the Smith URL indicated in Homework 11.  In particular, the armaghdata.txt and bramemardata.txt have been slightly modified to ensure that the coldest temperature is found in both cities.
 
* Please download a new set of temperature-data files from the Smith URL indicated in Homework 11.  In particular, the armaghdata.txt and bramemardata.txt have been slightly modified to ensure that the coldest temperature is found in both cities.
* When your program is tested, it will be given different files that will have been modified to have common lowest temperatures, to fully test your program, and it is possible that all the files will contain the same lowest temperature.
+
* When your program is tested, it will be given different files that will have been modified to have common lowest temperatures, to fully test your program, and it is possible that all the files will contain the same lowest temperature.  It is also possible that a file may contain only 1 line of temperature data.
 
<br />
 
<br />
 
==Requirements==
 
==Requirements==
 
<br />
 
<br />
 
* Store your program in a file called '''final1.py'''.
 
* Store your program in a file called '''final1.py'''.
* The program should get the names of the temperature files as one long line (see Example section below).
+
* Make sure your program contains a '''main()''' function, and that the execution starts with main, with this code, which should be the last 2 lines of your program:
* If one of the names given is invalid (the file does not exist), your program should simply print "Invalid file name given." and stop, without outputting any temperature information, even if the other file names are valid. (The test program will check for the presence of the word "invalid" in your output.)
+
<br />
 +
::<source lang="python">
 +
if __name__=="__main__":
 +
    main()
 +
</source>
 +
<br />
 +
* The program should get the names of the temperature files on one long line (see Example section below).
 +
* If one of the names given is invalid (the file does not exist), your program should simply print "Invalid file name given" and stop, without outputting any temperature information, even if the other file names are valid. (The test program will check for the presence of the word "invalid" in your output.)
 
<br />
 
<br />
 
==Example==
 
==Example==
Line 50: Line 56:
 
  File names? <u>armaghdata.txt ballypatrickdata.txt bradforddata.txt braemardata.txt notAGoodFileName.zip</u>
 
  File names? <u>armaghdata.txt ballypatrickdata.txt bradforddata.txt braemardata.txt notAGoodFileName.zip</u>
 
   
 
   
  Invalid file name!
+
  Invalid file name.
 
   
 
   
 
<br />
 
<br />
Line 57: Line 63:
 
* All fields are printed on one line only, and separated by spaces.
 
* All fields are printed on one line only, and separated by spaces.
 
* If different cities contain the same lowest temperature, they are listed in alphabetical order.  For example, Armagh is listed before Braemar in the result line, above.
 
* If different cities contain the same lowest temperature, they are listed in alphabetical order.  For example, Armagh is listed before Braemar in the result line, above.
* Use the same prompt for your program ("File names?"), to make it easier to recognize the true output from the prompt.
+
* Use this prompt to ask the user to enter the file names: "File names?"
 
<br />
 
<br />
 
==Submission==
 
==Submission==
Line 63: Line 69:
 
* Submit your program the Final Problem 1 section on Moodle.
 
* Submit your program the Final Problem 1 section on Moodle.
 
<br />
 
<br />
=Problem 2: Frogger=
+
=Problem 2: Frogger Game=
 
<br />
 
<br />
 
<center><videoflash>plgm_p2zAek</videoflash></center>
 
<center><videoflash>plgm_p2zAek</videoflash></center>
 
<br />
 
<br />
 
(if the video does not show in the page, you can watch it on YouTube: [https://www.youtube.com/watch?v=plgm_p2zAek https://www.youtube.com/watch?v=plgm_p2zAek])
 
(if the video does not show in the page, you can watch it on YouTube: [https://www.youtube.com/watch?v=plgm_p2zAek https://www.youtube.com/watch?v=plgm_p2zAek])
Your assignment is to write a graphics program that implements the game illustrated in the video, with a few additional features.
+
Your assignment is to write a program that uses graphics, and that implements the game illustrated in the video, with a few additional features.
 +
<br />
 +
Note that the cars appearing on the left of the screen in the video, blink.  This is a side-effect of the graphics library, and not a voluntary feature of the program. 
 
<br />
 
<br />
 
==Frog==
 
==Frog==
 
<br />
 
<br />
 
[[Image:frog3.gif|right]]
 
[[Image:frog3.gif|right]]
You can use the frog image on the right for your game, or use one you will have found on the Web.  Or you can draw it using ovals and/or circles.  The URL for the image on the right is: [http://cs.smith.edu/dftwiki/images/f/f6/Frog3.gif cs.smith.edu/dftwiki/images/f/f6/Frog3.gif].
+
You can use the frog image shown on the right for your game, or use one you will have found on the Web.  Or you can draw it using ovals and/or circles.  The URL for the image on the right is: [http://cs.smith.edu/dftwiki/images/f/f6/Frog3.gif cs.smith.edu/dftwiki/images/f/f6/Frog3.gif].  If you use your own image, make sure you call it '''Frog3.gif'''.  When your program is tested, the Frog3.gif image shown here will be the one your program will find and use.
 
<br />
 
<br />
 
==The Banner==
 
==The Banner==
Line 138: Line 146:
 
* The number of cars used by the program is fixed and does not grow as the game evolves.  In the video, the number of cars is 3, but you can use more.  When a car disappears on one end of the screen it reappears on the other side, after a short delay.  The delay is up to you.
 
* The number of cars used by the program is fixed and does not grow as the game evolves.  In the video, the number of cars is 3, but you can use more.  When a car disappears on one end of the screen it reappears on the other side, after a short delay.  The delay is up to you.
 
* The frog moves up or down by a fixed amount.  To make the frog move up, the user must click the mouse in the area of the window above the road.  To make the frog move down, the user clicks the mouse in the area of the window below the road.
 
* The frog moves up or down by a fixed amount.  To make the frog move up, the user must click the mouse in the area of the window above the road.  To make the frog move down, the user clicks the mouse in the area of the window below the road.
* The frog "dies," or loses a ''life point'' when it is run over by a car.  You are free to determine the conditions for which the program will determine that the car is running over the frog.  In the video the top or bottom of the frog can overlap slightly a car without triggering the program to detect an overlap.  There is flexibility.
+
* The frog "dies," or loses a ''life point'' when it is run over by a car.  You are free to determine the conditions for which the program will determine that the car is running over the frog.  In the video the top or bottom of the frog can overlap slightly the body of a car without triggering the program to detect an overlap.  There is flexibility.
* The program automatically brings the frog back down, to its initial position, when a car runs over it, or when the frog has fully crossed the road.
+
* The program automatically brings the frog back down to its initial position when a car runs over it, or when the frog has fully crossed the road.
 
<br />
 
<br />
 
==Grading==
 
==Grading==
 
<br />
 
<br />
* Assuming that your program is well documented, and nicely organized, the following features will be worth various number of points.  A grade of 100 will be given to a will documented and organized program that behaves similarly to the game illustrated in the YouTube video, but with two lanes of cars, one lane going left to right, one going right to left.  The number of cars must remain constant, and cars disappearing on one end are made to reappear on the other side.
+
* Assuming that your program is well documented, and nicely organized with functions and classes, the following features will be worth various number of points.  A grade of 100 will be given to a will documented and organized program that behaves similarly to the game illustrated in the YouTube video, but with two lanes of cars, one lane going left to right, one going right to left.  The number of cars must remain constant, and cars disappearing on one end are made to reappear on the other side.
 
* Banner working correctly: 10 points
 
* Banner working correctly: 10 points
 
* Cars moving off the graphics window and reappearing on the other side: 10 points.
 
* Cars moving off the graphics window and reappearing on the other side: 10 points.
Line 156: Line 164:
  
 
<br />
 
<br />
 +
 
=Problem 3: Twitter=
 
=Problem 3: Twitter=
 
<br />
 
<br />
Line 170: Line 179:
 
==Format of the File==
 
==Format of the File==
 
<br />
 
<br />
* The file provided to you, and which will be used to test your program, are illustrated by this simple example.
+
* The format of the file provided to you and used to test your program, is illustrated by this simple example.
 
   
 
   
 
  ----
 
  ----
Line 186: Line 195:
 
<br />
 
<br />
 
==Sample File==
 
==Sample File==
* Click on this URL: [http://cs.smith.edu/dftwiki/media/twitterFeed.tx http://cs.smith.edu/dftwiki/media/twitterFeed.txt] and save the text that will display in your browser to a text file that you will call '''twitterFeed.txt''', in a directory of your choice on your computer.  Do not edit the information in the file, and do not remove anything from it, as your program needs to be able to treat it "as is," and will be tested with another file, similar in format, but with different contents.
+
* Click on this URL: [http://cs.smith.edu/dftwiki/media/twitterFeed.txt http://cs.smith.edu/dftwiki/media/twitterFeed.txt] and save the text that will display in your browser to a text file that you will call '''twitterFeed.txt''', in a directory of your choice on your computer.  Do not edit the information in the file, and do not remove anything from it, as your program needs to be able to treat it "as is," and will be tested with another file, similar in format, but with different contents.
 
<br />
 
<br />
==Example Interaction with the User==
+
== Interaction with the User==
 
<br />
 
<br />
 
* Below is an example of an interaction with the solution program:
 
* Below is an example of an interaction with the solution program:
 
<br />
 
<br />
  File name? twitterFeeeeeeeed.txt
+
  File name? <u>twitterFeeeeeeeed.txt</u>
 
  Invalid file name.  Please reenter
 
  Invalid file name.  Please reenter
  File name? twit.txt
+
  File name? <u>twit.txt</u>
 
  Invalid file name.  Please reenter
 
  Invalid file name.  Please reenter
  File name? twitterFeed.txt
+
  File name? <u>twitterFeed.txt</u>
 
  Location of interest? northampton
 
  Location of interest? northampton
 
  keyword of interest? Maya
 
  keyword of interest? Maya
File name? twitterFeed.txt
 
 
  --- Output ---
 
  --- Output ---
 
  252 tweets read
 
  252 tweets read
Line 208: Line 216:
 
  Number of times "Maya" appears in text:  5
 
  Number of times "Maya" appears in text:  5
 
<br />
 
<br />
* Your program must match this output as closely as possible, including the "---Output---" line.  Remember that your program will be tested with a collection of tweets that will be different, and probably gathered in a different time period, so your program must locate the oldest and newest tweets, and not simply output the dates shown above!
+
* Your program must match this output as closely as possible, including the "---Output---" line.  Remember that your program will be tested with a collection of tweets that will be different, and probably gathered in a different time period, so your program must locate the oldest and newest tweets ''found'', and not simply output the dates shown above!
 +
* <font color="magenta">(Addition)</font>: The number of distinct locations is the number of different strings used to represent locations.  "Northampton, MA" is distinct from "Northampton MA".  "Northampton" is the same as "northampton". 
 +
* <font color="magenta">(Addition)</font>:  You are free to make an empty location count as a unique location or not.  So if the file contains 2 tweets, one with location "Northampton", and the other one with a blank location (only white space after the "Location: " string in the file), then that will count as either 1 or 2 distinct locations.  Both answers are correct.
 +
* Note also that the date has been modified by the program, and is output as an 8-digit quantity; the year first, followed by the month, followed by the day.  Note also that April is represented by 04, and not 4.
 +
<br />
 +
 
 +
==Requirements==
 +
<br />
 +
* Make sure your program contains a '''main()''' function, and that the execution starts with main, with this code, which should be the last 2 lines of your program:
 +
<br />
 +
::<source lang="python">
 +
if __name__=="__main__":
 +
    main()
 +
</source>
 +
<br />
 
<br />
 
<br />
 
==Testing==
 
==Testing==
 
<br />
 
<br />
* Test your program well.  In particular, your program should be able to not crash if the file given to it contains only 1 entry, or if the file is empty.
+
* Test your program well.  In particular, your program should be able not to crash if the file given to it contains only 1 entry, or if the file is empty.
 
* You can assume that all entries will always contain 4 fields (date, location, screen-name, and text).
 
* You can assume that all entries will always contain 4 fields (date, location, screen-name, and text).
* When looking for the number of unique locations found in the tweets, "Northampton, MA" and "Northampton, Massachusetts" count as 2 different locations.  Basically if the lowercase versions of two different locations are not equal, the locations are distinct.  "Northampton MA" and "Northampton, MA" are distinct (because of the comma).  "northampton" and "Northampton" are the same.
+
* When looking for the number of unique locations found in the tweets, "Northampton, MA" and "Northampton, Massachusetts" count as 2 different locations.  Basically if the lowercase string versions of two different locations are not equal, the locations are distinct.  "Northampton MA" and "Northampton, MA" are distinct (because of the comma).  "northampton" and "Northampton" are the same.  "Northampton " and "Northampton" are the same (because the stripped strings are the same)
 +
* <font color="magenta">(New addition)</font> When your program counts the number of tweets that match the "location of interest" selected by the user, it should look for ''partial'' matches in the location fields only.  For example, if the user writes "amherst" as her location of interest, then the program will count "Amherst, MA", "South Amherst, MA", "North-Amherst, MA" as matching her selection.
 
<br />
 
<br />
 +
 
==Submission==
 
==Submission==
 
<br />
 
<br />
 
* Submit your program in the Final Problem 3 section.
 
* Submit your program in the Final Problem 3 section.
 
<br />
 
<br />
 +
 +
=Problem 4: Quiz=
 +
<br />
 +
Answer the questions in the Quiz section of the Final Exam section, on Moodle.
 
<br />
 
<br />
 +
</onlydft>
 
<br />
 
<br />
 
<br />
 
<br />
 
[[Category:CSC111]][[Category:Python]]
 
[[Category:CSC111]][[Category:Python]]
 
 
</onlydft>
 

Latest revision as of 17:22, 12 December 2015

This exam is a take-home exam given under the rules of the Smith College Honor-Code. Please make sure you read it and understand it.
The exam is open book, open notes, and open Web.
You have to do the work individually. You cannot seek help from anybody for this exam. The TAs will not have consulting hours, and will not be allowed to answer questions relating to Python or the class material. All questions relating to this Final should be directed to your instructor, and posted on Piazza. Posts on piazza should not contain any code. Only questions meant to clarify the exam are allowed. No debugging-related questions will be answered.
The deadline for the exam is Friday, May 8, at 4:00 p.m.' While you are given 8 days on this exam, the programming should not take you more than a day, two at most, so organize your time well. No extensions will be granted beyond the due date and time.



...