Here's a self test you can take to see if you have strong programming skills. For each of these questions, feel free to use your programming language of choice. The questions are progressively more challenging:
- Write a program to generate 100 random integers between 1 and 100. It should generate exactly the same numbers each time you run it. Bonus: If you wonder whether the distribution should be normal or uniform, give yourself extra points.
- Write a program to sort a list of numbers provided on standard input (for instance, the numbers you generated above). You are NOT allowed to call external routines to do the sorting for you. After sorting the numbers, print them out. Focus on a simple method (not an efficient method).
- Write a program that can read in a list of words and convert each word into an integer, and a separate program that convert integers into words. The program should work with words up to 10 characters in length. It should generate integers in the range 0 to N^10, where N is the number of characters in the alphabet you are using. If N=26, then your maximum value would be 26^10 = 141167095653376.
- Write a program to discover the answer to this puzzle:"Let's say men and women are paid equally (from the same uniform distribution). If women date randomly and marry the first man with a higher salary, what fraction of the population will get married?"
You should be able to complete #1 in less than ten minutes, #2 in less than 20 minutes, and #3 in less than 45 minutes. Even if it takes you longer than this, it is OK, but you should plan extra time for the course.
If you cannot complete these questions you should not take the course.
Here are some separate questions regarding Unix expertise. If the course you are taking requires Unix, you should be able to answer these questions quickly.
- Suppose you have opened a terminal window on a Unix machine and you are attempting to run the program named "soccer." You see the following on your screen:
computer> cd Desktop/Downloads/asciisoccer computer> ls CONTEST_RULES index.html libwestcommon.a soccer.c teams NEW libeast.a makefile soccer.h temp.txt cleanteams libeastcommon.a players.h soccer.o contest libwest.a soccer suggestions computer> soccer soccer: Command not found. computer>
What should you do?
- What is the difference between the programs "more" and "less?"
- How can you find which programs are running on your computer, and how much CPU they are using?
- vi or emacs?
Convert words to numbers and back
You are to implement two programs in Python: tonumber.py and toword.py
tonumber.py should have the following functionality:
- Objective: convert english words to numbers.
- Assume all text is in lower case
- Support words up to 10 characters in length.
- Support English text (i.e., no need to support non-ASCII characters).
- Process one word at a time and convert it to a whole number.
- Output the numbers to a text file
toword.py should have the following functionality:
- Read in a file like numbers.txt one line at a time and output words.txt -- a file with one word per line.
The output to numbers.txt might look like this:
345343454 56454532 45654 45686967855 456234 34534 345655 45 1 97897877 78345232
Note that the above list of numbers is NOT intended to be correct. The numbers your code calculates will depend on the method you use. Finally the output from towords.py might look like this:
disclaimer pertaining to investadvice please note jojoba is a technology company