This is a general outline of the key concepts (arranged by topic) that you should know for Exam 02.

Format

The exam will have the following format:

  1. Code Snippets: Write Python code snippets to perform certain tasks (6 Points).

  2. Short Answers: Briefly answer questions about

  3. Translation: Convert Unix pipelines to Python code (8 Points).

Parts 1 and 2 are to be done first on paper. After these parts are completed, part 3 can be done with the aid of your laptop and the Internet (but not other people).

Representative, but not Exhaustive

This check list is meant to be representative, rather than exhaustive (ie. there may be questions that show up on the exam that are not shown below).

Data Processing

Concepts

  1. How is Python different from the Bourne shell? How is it similar?

  2. How do we manage control flow in Python? How do we utilize these constructs?

    • Conditionals

    • Loops

    • Exceptions

    • Functions

  3. What data structures do we have in Python? What are their basic operations? When would we want to use each type of data structure?

    • Lists

    • Tuples

    • Dictionaries

    • Sets

  4. How do we do the following in Python?

    • Process command-line arguments

    • Read and write files

    • Read standard input

    • Change the case of a string

    • Split a string, combine a list of strings

    • Slice a list

    • Use regular expressions

    • Check if a file exists

    • Execute an external command

    • Fetch data from the web

    • Process JSON data from the web

Sample Questions

Code Snippets

Write Python code snippets to perform the following tasks (don't worry about she-bangs or imports):

  1. Print out each element of a list (one element per line).

  2. Print the contents of stdin (line-by-line).

  3. Print the first 10 items of a list.

  4. Print the length of a list.

  5. Print the largest and smallest elements of a list.

  6. Print the first and last words in the string "Let this promise in me start, Like an anthem in my heart".

  7. Print the results of the ps aux command.

  8. Print the contents of a specific webpage.

Translation

Given the following Unix pipelines, write Python code that accomplishes the same task.

Note: No credit will be given for simply calling os.system on the given pipeline.

  1. cat /etc/passwd | cut -d : -f 1 | grep d$ | wc -l

  2. cat /etc/passwd | cut -d : -f 3 | grep -E '^[0-9]{2}$' | sort | uniq

  3. curl -sL http://yld.me/raw/lmz | cut -d , -f 1 | grep -Eo '^[^jfs].*'

  4. curl -sL http://yld.me/raw/lmz | cut -d , -f 2 | grep -Eo '^B.*' | sort

  5. who | sed -rn 's|.*\((.*)\).*|\1|p' | sort | uniq

  6. ls -l /etc | awk '{print $2}' | sort | uniq -c

Functional Programming

Concepts

  1. What is the difference between procedural and functional programming?

  2. How do we use map, filter, reduce, and lambda to do functional programming in Python?

  3. How do we use list comprehensions to do functional programming in Python?

  4. What is an iterator and how is it different from a list?

    • What are the advantages of using an iterator?

    • What are the disadvantages of using an iterator?

  5. What is a generator and how it is different from a list?

  6. How do we use common iterators and generators such as:

Concurrency and Parallelism

Concepts

  1. What is the difference between concurrency and parallelism?

  2. What is MapReduce?

    • What problem is MapReduce trying to solve?

    • What are the three phases of a typical MapReduce workflow?

    • How does MapReduce exhibit concurrency and parallelism?