Python and coding theory - SM450
Spring 2009-2010
A course on Error-correcting codes, Gray codes, cryptography, and other aspects of coding theory, as well as Python programming.
- policy statement.
- lecture notes (2010-01-09), lecture notes (2010-03-20).
- local Sage server (please use your email login also as the Sage login).
- Take home tests: Test 1, Test 2.
- Examples of term projects: crowd dynamics (Sage code), social networks, subspace arrangement codes.
On March 5th Dr. Jose Unpingco will lecture to the sm450 class, but we will meet instead in the seminar room. He sent in the following short description: "In this lecture, we will discuss using the Python language to investigate basic coding and information theory, the DoD High Performance Computing Program and how it relates to DoD science, using Python for interactive parallel computing, and best practices for debugging Python programs in a Windows environment." His excellent lecture as a pdf.
References:
- N. Biggs, Codes: An introduction to information, communication, and cryptography, Springer, 2008.
- Beginner's Guide to Python webpage,
http://wiki.python.org/moin/BeginnersGuide - Swaroop C H, A Byte of Python,
http://www.swaroopch.com/byteofpython/
A Python book for inexperienced programmers, free electronic versions. - T. Brock, Linear Feedback Shift Registers and Cyclic Codes in Sage, Rose-Hulman Undergraduate Mathematics Journal, vol. 7, 2006. http://www.rose-hulman.edu/mathjournal/v7n2.php, or
brock - Ondrej Certik and others, SymPy, http://www.sympy.org/
- Erik Demaine, Charles Leiserson Introduction to Algorithms,
http://ocw.mit.edu/OcwWeb/Electrical-Engineering-and-Computer-Science/6-046JFall-2005/CourseHome/This course teaches techniques for the design and analysis of efficient algorithms, emphasizing methods useful in practice. Topics covered include: sorting; search trees, heaps, and hashing; divide-and-conquer; dynamic programming; amortized analysis; graph algorithms; shortest paths; network flow; computational geometry; number-theoretic algorithms; polynomial and matrix calculations; caching; and parallel computing.
Textbook: Introduction to Algorithms, Second Edition, by Cormen, Leiserson, Rivest, and Stein.
Extra credit: If you watch all these lectures and turn in your lecture notes you will get extra credit for sm450.
- Mark Pilgrim, Dive Into Python, http://www.diveintopython.org/
A Python book for experienced programmers, free electronic versions.
- Stephen Ferg, Debugging in Python,
http://pythonconquerstheuniverse.wordpress.com/category/the-python-debugger/ - Eric Grimson, John Guttag, Introduction to Computer Science and Programming, Fall 2008 course taught at MIT,
http://ocw.mit.edu/OcwWeb/Electrical-Engineering-and-Computer-Science/6-00Fall-2008/CourseHome/index.htmDescription: This course is aimed at students with little or no programming experience. It aims to provide students with an understanding of the role computation can play in solving problems. It also aims to help students, regardless of their major, to feel justifiably confident of their ability to write small programs that allow them to accomplish useful goals. The class will use the Python programming language.
Extra credit: If you watch all these lectures and turn in your lecture notes you will get extra credit for sm450.
- The photo of Grace Hopper's logbook was obtained from the U.S. Navy's history webpage:
http://www.history.navy.mil/photos/pers-us/uspers-h/g-hoppr.htm; see also http://en.wikipedia.org/wiki/Grace_Hopper - Profile: David Huffman, Scientific American, Sep. 1991, p. 54, p. 58.
http://www.huffmancoding.com/david-huffman/scientific-american - Huffman codes, Wikipedia aticle,
http://en.wikipedia.org/wiki/Huffman_codes - W. C. Huffman, V. Pless, Fundamentals of error-correcting codes, Cambridge Univ. Press, 2003.
- Steven F. Lott, Building Skills in Python, http://homepage.mac.com/s_lott/books/python.html
A Python book for experienced programmers; free electronic versions.
- Alan Gauld, Learning to Program (in Javascript and Python) webpages,
http://www.freenetpages.co.uk/hp/alan.gauld/ - Peter Norvig, Teach Yourself Programming in Ten Years,
http://norvig.com/21-days.html - J. Oxley, Matroid theory, Oxford Univ. Press, 1992.
- Project Euler website,
http://projecteuler.net/index.php?section=problems - Pramode C.E., Python generator tricks, Linux Gazzette, March 2004, http://linuxgazette.net/100/pramode.html
- Python idiom webpages
- David Goodger, Code Like a Pythonista: Idiomatic Python webpage,
http://python.net/~goodger/projects/pycon/2007/idiomatic/handout.html - Philip Guo, Python programming idioms webpage,
http://www.stanford.edu/~pgbovine/python-idioms.htm - Rob Knight, Python Idioms and Efficiency webpage, http://jaynes.colorado.edu/PythonIdioms.html
- David Goodger, Code Like a Pythonista: Idiomatic Python webpage,
- John Perry, lecture notes on a course titled Mathematical Computing,
http://www.math.usm.edu/perry/mat305fa09/ - Wikibooks Python Programming,
http://en.wikibooks.org/wiki/Python_Programming - Python 2.5 Quick Reference,
http://rgruet.free.fr/PQR25/PQR2.5.htmlAlso a free pdf is available for download.
- Guido van Rossum (Fred L. Drake, Jr., editor), An Introduction to Python, Guido van Rossum (Fred L. Drake, Jr., editor) http://www.network-theory.co.uk/docs/pytut/
Concisely written introduction by the ''father'' of Python. See also
http://docs.python.org/tutorial/index.html
http://docs.python.org/tutorial/ - Python Programming Language - Official Website,
http://www.python.org - W. Stein and others, Sage - a mathematical software system,
http://www.sagemath.org/ - W. Stein, Lecture notes on a course titled Algebraic, Scientific, and Statistical Computing, an Open Source Approach Using Sage,
http://wiki.wstein.org/2008/480a - Jeffrey Elkner, Allen B. Downey, and Chris Meyers, How to Think Like a Computer Scientist - Learning with Python (2nd Edition),
http://openbookproject.net//thinkCSpyA Python book for inexperienced programmers; free electronic versions.
- Kirby Urner's website on programming and teaching Python and mathematics
http://www.4dsolutions.net/ocn/index.html - YouTube Python tutorials,
http://www.youtube.com/watch?v=4Mf0h3HphEAPython Programming Tutorial - 1 - Installing Python
-
Wikibooks Non-Programmer's Tutorial for Python,
http://en.wikibooks.org/wiki/Non-Programmer's_Tutorial_for_Python_2.0
http://en.wikibooks.org/wiki/Non-Programmer's_Tutorial_for_Python_2.0