CompSciWeek3

Reading Assignment

 * Beginning Python, Chapter 6
 * Algorithms, Chapters 1-2
 * focus on tree data structures (formal complexity next week)
 * ignore python 'Class' for now

= Class 1: Intermediate shell utilities =
 * commands
 * man/info <-> help
 * ls <-> dir
 * cat <-> print
 * grep <-> string.find
 * sort <-> list.sort
 * head / tail <-> list.__slice__ (i.e. l[:10])
 * tr, sed <-> string.replace
 * find
 * w, top, last
 * shell variables
 * control flow
 * shell functions -- f { commands; }
 * pipes, redirection, &&, || -- a | b, a && b, a || b
 * for, while loops -- for i in 1 2 3; do ... done, for((i=0; i<$n; i++)); do ... done

References:
 * Python Syntax
 * Bash Syntax
 * Sed One-Liners

= Class 2: Python vs. shell =
 * Reading / Writing Files
 * Advanced control structures (list comprehensions)
 * Code profiling
 * Hash tables
 * Graphs

= Homework 2 - due Tuesday, Sept. 16 =

Since the due date was pushed back, re-submitted homework will be accepted in place of the original. As a reminder, all homework must be done on your own. Send the homework as a single txt file attachment with the subject line "Sci Comp HW2". If you send a pdf, format it using the script Code:text2pdf.


 * Coding problems:
 * Write a loop to sum 100 random numbers (import random, random.random) using each of the following control structures: for, while, list and `tuple` comprehension. The first two can generate numbers in the loop, the last two must create iterators / generators and can use the python builtin `sum' function.
 * Write a shell loop to save 100 numbers from $RANDOM to a file, writing one number per line. (hint: use the shell append re-direction, >> instead of the usual re-direction >)
 * Write a shell loop to sum files with 1 number per line. -- use shell math expressions, like a=$(($a*12))
 * Write python and shell programs to print the smallest 10 numbers from such a file.
 * Write a text processing script using sed to get the numbers for the following quantities from [[File:multiwfn.txt]]
 * Basin electric monopole moment: (1 number for ea. line)
 * Basin electric dipole moment: and Basin electron contribution to molecular dipole moment: (3 numbers from ea. line) The input is tagged X=, etc, the output should have only numbers.
 * (Clarification) The output (if run) would be one file with all the "monopole" numbers, 1 per line, another with all the "dipole" numbers, 3 per line. I just want the code, not the output.