Difference between revisions of "CompSciFall2014"

From Predictive Chemistry
Jump to: navigation, search
m (Notes & Homework)
 
(4 intermediate revisions by the same user not shown)
Line 5: Line 5:
 
* Credit Hours: 3
 
* Credit Hours: 3
 
* Meeting Dates: Aug. 25 - Dec. 3, 2014
 
* Meeting Dates: Aug. 25 - Dec. 3, 2014
** No Class Sept. 1 and Nov. 28
+
** No Class Sept. 1, Oct. 17, and Nov. 28
 
* Meeting Times: Mon. and Wed., 12:30-13:45 in SCA 222
 
* Meeting Times: Mon. and Wed., 12:30-13:45 in SCA 222
 
** Lab Session & Office Hours: Fri. 12:30-13:45 in SCA 222
 
** Lab Session & Office Hours: Fri. 12:30-13:45 in SCA 222
Line 22: Line 22:
 
Mathematical models in the natural sciences take many shapes and forms. The moment they become more complicated than tracking a few variables over time, we have to put away our Excel spreadsheets and make use of a solid foundation in computational science. The course establishes this foundation by introducing data structures and algorithms used in everyday scientific computing using examples in the python scripting language. By the end of the Semester, students will be able to navigate the Linux command-line to go from a mathematical model to a numerical solution. Best practices for working with computer code and visualizing data will also be covered.
 
Mathematical models in the natural sciences take many shapes and forms. The moment they become more complicated than tracking a few variables over time, we have to put away our Excel spreadsheets and make use of a solid foundation in computational science. The course establishes this foundation by introducing data structures and algorithms used in everyday scientific computing using examples in the python scripting language. By the end of the Semester, students will be able to navigate the Linux command-line to go from a mathematical model to a numerical solution. Best practices for working with computer code and visualizing data will also be covered.
   
== Textbooks ==
+
== Textbooks and Resources ==
   
 
* [http://link.springer.com.ezproxy.lib.usf.edu/book/10.1007%2F978-1-4302-0072-7 Beginning Python, Hetland, 2005] (eBook avail. from USF Library)
 
* [http://link.springer.com.ezproxy.lib.usf.edu/book/10.1007%2F978-1-4302-0072-7 Beginning Python, Hetland, 2005] (eBook avail. from USF Library)
Line 38: Line 38:
 
** Instant feedback graphical programming with [https://www.khanacademy.org/cs/programming/ Khan Academy]
 
** Instant feedback graphical programming with [https://www.khanacademy.org/cs/programming/ Khan Academy]
 
* [http://www.meetup.com/python-178/ Local PyBulls Meetings]
 
* [http://www.meetup.com/python-178/ Local PyBulls Meetings]
  +
  +
Code:
  +
* [http://carsonfarmer.com/2013/07/essential-python-geo-libraries Python Libraries Useful for Geospatial Problems]
  +
* [[Code#Python_Libraries|Python Libraries Useful for Computational Chemistry]] (very small list at present)
  +
  +
Interactive Interpreters:
  +
* [http://www.codewars.com CodeWars] Recommended for building experience with practice problems.
  +
* [http://exercism.io Exercism] A command-line client with a similar learn-through-challenge philosophy.
  +
* [http://repl.it repl.it] A read-eval-print loop for several computer languages.
  +
* [http://en.cppreference.com/w/cpp/language CppReference] Documentation with an online evaluator for C++ code.
   
 
== Topics ==
 
== Topics ==
Line 79: Line 89:
 
* [[CompSciWeek6]] Sept. 29
 
* [[CompSciWeek6]] Sept. 29
 
* [[CompSciWeek7]] Oct. 6
 
* [[CompSciWeek7]] Oct. 6
* [[CompSciWeek8]] Oct. 13
+
* [[CompSciWeek8]] Oct. 13 (No class Fri., Oct. 17)
 
* [[CompSciWeek9]] Oct. 20
 
* [[CompSciWeek9]] Oct. 20
 
* [[CompSciWeek10]] Oct. 27
 
* [[CompSciWeek10]] Oct. 27
Line 85: Line 95:
 
* [[CompSciWeek12]] Nov. 10
 
* [[CompSciWeek12]] Nov. 10
 
* [[CompSciWeek13]] Nov. 17
 
* [[CompSciWeek13]] Nov. 17
* [[CompSciWeek14]] Nov. 24
+
* [[CompSciWeek14-15]] Nov. 24 (No class Fri., Nov. 28)
* [[CompSciWeek14]] Dec. 1
+
* [[CompSciWeek14-15]] Dec. 1

Latest revision as of 11:58, 22 October 2015

Introduction to Scientific Computing

Course Info

  • Course Numbers CHM 4932/6938, CRN: 94314
  • Credit Hours: 3
  • Meeting Dates: Aug. 25 - Dec. 3, 2014
    • No Class Sept. 1, Oct. 17, and Nov. 28
  • Meeting Times: Mon. and Wed., 12:30-13:45 in SCA 222
    • Lab Session & Office Hours: Fri. 12:30-13:45 in SCA 222
  • Assignments:
    • Weekly Homework (60%)
    • Midterm Project (20%)
      • Topic by Friday, Sept. 19
      • due Friday, Oct. 17, 2014
    • Final Project (20%)
      • Topic by Friday, Nov. 14
      • due Friday, Dec. 5, 2014

Overview

Mathematical models in the natural sciences take many shapes and forms. The moment they become more complicated than tracking a few variables over time, we have to put away our Excel spreadsheets and make use of a solid foundation in computational science. The course establishes this foundation by introducing data structures and algorithms used in everyday scientific computing using examples in the python scripting language. By the end of the Semester, students will be able to navigate the Linux command-line to go from a mathematical model to a numerical solution. Best practices for working with computer code and visualizing data will also be covered.

Textbooks and Resources

Other (possibly useful) materials:

  • Chapters 7&8 of Modelling and Simulation, Birta and Arbez, Springer 2007 (eBook avail. from USF Library).
  • Chapters 4-6 of Models and Algorithms for Intelligent Data Analysis, Runkler, Springer 2012 (eBook avail. from USF Library).
  • Guide to Scientific Computing in C++, Francis and Whiteley, Springer, 2012. (eBook avail. from USF Library)
  • Extra info. On the basics:
    • Chapters 3 and 7 of Mathematics in Computing, Regan, Springer 2013. (eBook avail. from USF Library)
    • Instant feedback graphical programming with Khan Academy
  • Local PyBulls Meetings

Code:

Interactive Interpreters:

  • CodeWars Recommended for building experience with practice problems.
  • Exercism A command-line client with a similar learn-through-challenge philosophy.
  • repl.it A read-eval-print loop for several computer languages.
  • CppReference Documentation with an online evaluator for C++ code.

Topics

  1. Languages
    • bash (shell)
    • python (scripting)
    • stack & register-based machine languages: overview of C and Fortran syntax & compiling with gcc, ‘thread safety’
    • Shared libraries & language inter-operability (FFI)
  2. Algorithms
    • Horner’s algorithm for polynomials
    • Newton’s root finding algo.
    • Overview of general optimization algo-s (example: linear & nonlin. least-squares)
    • Numerical integration (scripted, plus gnu ODE)
    • Communication (how HTTP get/put works)
  3. Data Structures
    • Linked Lists
    • Trees (file system hierarchies)
    • Graphs
    • Arrays (dense & sparse) example: vectors & rotations / transpositions, densities and difference operators
  4. Presentation & visualization
    • Flat CSV files (and excel)
    • Working with binary data
    • Python matplotlib (2D images)
    • Binning histograms & weighted averages
  5. Best Practices
    • High-level code design (modularity, interface specifications, unit testing, etc.)
    • Code audit: open-source libraries, ex. Gnu Scientific Library, qsort in libc, Boost
    • Source code versioning (example: git or mercurial)
    • gdb & execution profiling
    • documentation
    • Makefiles

Notes & Homework