# CompSciWeek3

• 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:

# Class 2: Python vs. shell

• 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
1. Basin electric monopole moment: (1 number for ea. line)
2. 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.