Physics 212, 2016: Syllabus

From Ilya Nemenman: Theoretical Biophysics @ Emory
Revision as of 14:05, 9 April 2016 by nemenman>Ilya (Tentative class schedule)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search
Emory Logo

Back to the main Teaching page.

Back to Physics 212, 2016: Computational Modeling.

Course Title
Computational Modeling for Scientists and Engineers
Course Numbers
Physics 212/Biology 212
Professor
Ilya Nemenman ilya.nemenman@emory.edu (best way to contact me)
Teaching Assistant
Stephen Frazier stephen.c.frazier@emory.edu
Office Hours
Ilya Nemenman -- Monday, 4:00-5:00, and by appointment, MSC N240
Stephen Frazier -- Thursday, 3:30-4:30, and by appointment, MSC N113
Class Web Page
http://nemenmanlab.org/~ilya/index.php/Physics_212,_2016:_Computational_Modeling_For_Scientists_And_Engineers

About the class

Computation is one of the pillars of modern science, in addition to experiment and theory. In this course, various computational modeling methods will be introduced to study specific examples derived from physical, biological, chemical, and social systems. We will study how one makes a model, implements it in computer code, and learns from it. We will focus on modeling deterministic dynamics, dynamics with randomness, on comparison of mathematical models to data, and, at the end, on high performance computing. Students will learn Python programming language and will work on computational modeling projects in groups.

Textbooks

See also Computational Modeling and Visualization of Physical Systems with Python by J Wang and Computational Physics by Giordano and Nakanishi.
The bible of scientific computing is Numerical Recipies by Press et al.

Required Software

Pre-requisites

Pre-requisites: two semesters of calculus and PHYS 151, or instructor consent. I do not require prior computing experience.

This class differs from most other classes in that we will use mathematical modeling and computer simulations as a language that glues students from very diverse backgrounds. Thus we will be spending many of our class hours programming in Python in class. It is thus essential to have a laptop or a desktop computer access. You will be working in groups of 3-4 students, depending on the eventual class enrollment (up to 10 groups in the class), and each group must have at least one laptop in class.

Class structure

I request a lot from my students, but also provide them with all the necessary resources to succeed in the class. As a result, students will work hard, but will likely learn more than in a typical class. In practice, this philosophy is implemented as follows.

Modules
The class will consists of modules of a few weeks long. Typically, only the first few class periods of each module will be traditional in-class lectures or tutorials, where the necessary concepts will be introduced (though we might deviate from this as needed). The subsequent class periods in each module will involve students working in groups on solving projects (different groups will be solving different projects, which they will choose based other interests with my consent from those provided in the textbook and by me). Towards the end of the class, some of the projects may involve new, previously non-modeled data. As you will notice, each section of the textbook has simpler, introductory projects, and more complex ones. In class, your goal will be the more complex projects -- but solving them may require you to first understand the simpler ones as well. Thus you will be responsible for reading and working through the necessary introductory projects, in class or at home. The professor and the TA will be with you in class and during office hours to answer your questions about the background material, the projects, formulating their solutions, and implementing them in Python. The last class period of each module will end with a 20-30 min quiz, which will test your comprehension of the material in the module.
Finally, you will need to submit a report about your project for each module for grading. This will be due by the end of the weekend following end of the module. While you can do the work collectively with other students in your group, the quizzes and the reports are individual. We will discuss the structure of the reports in class when appropriate -- they are described in detail in the textbook.
You should work with different students for different modules of the class.
Homeworks
There will be no graded homework sets. However, solving the projects will require substantial work at home.
Review Sessions and office hours
I will have a regular office hour every week. So will the TA (at a different time). In addition, we will have review sessions before the exams, or when it becomes clear that many of you have similar concerns that must be addressed.
Exams
We will have an in-class midterm exam, and the final exam. During these exams, you will be required to answer questions about the concepts we studied in class, as well as to sketch pseudocode or Python solutions to short modeling problems.
Special note
I will need to travel professionally during the semester. As a result, a few classes will need to be rescheduled, or conducted by guest lecturers and/or the TA. These are
  1. January 20
  2. March 14, 16
  3. April 11, 13

Grading

  • Quizzes -- 15%
  • Project reports -- 60% cumulative for all projects
  • Final exam -- 25%

Your scores will convert to a letter grade as follows:

  • 93.0 - 100 A
  • 90.0 – 92.9 A-
  • 87.0 – 89.9 B+
  • 83.0 – 86.9 B
  • 80.0 – 82.9 B-

with the pattern repeating for C and D grades; 59.9 or less is a failing grade.

Honor code

The Emory College Honor Code applies to all homework assignments.

Tentative class schedule

The schedule of topics covered during each lecture is subject to change. I may need to revise it to reflect the pace of the class. The current schedule can be found on the class web site.

Module 1
Introduction to Modeling Process, Python Programming Language, and to Dynamics with Rate Proportional to Amount
Chapters 1, 2, and the Guide to Python, Chapters 1, 2.1-2.5, 3.3.1
Jan 13: Lecture: Introduction to the class, Introduction to Modeling
Jan 18: holiday, no class
Jan 20: Python Tutorial
Jan 25, 27, Feb 1: in-class projects
Feb 1: Quiz 1
Project report due: Feb 8
Module 2
Systems Dynamics Models with Interactions, Computational Errors, Simulation Techniques for Deterministic Dynamics
Chapters 3-7, and the Guide to Python, Chapter 2 (full), 5.1, 5.5.1, 5.8-5.8.2
Feb 3: Lecture: Modeling Dynamics with Interactions,
Feb 8: Lecture: Computational Errors, more Python Tutorials
Feb 10: Solvers for Systems Dynamics
Feb 15, 17, 22: in-class projects
Feb 22: Quiz 2
Project report due: Feb 29
Module 3
Data Driven Models -- Fitting Models to Data
Chapter 8, and the Guide to Python, Chapters 3, and "Get Going: D"
Feb 24: Lecture, Regression and other empirical models
Feb 29: Lecture: Fitting models to data, optimization
Mar 2: Lecture: Curve fitting, introducing the model systems
Mar 7-11: Spring break, no classes
Mar 14, 16, 21: in-class projects
Mar 21: Quiz 3
Project report due: Mar 28
Additional notes on this module: Here we deviate substantially from the textbook. I am not a fan of blind linear fits, and thus we will be doing more than linear regression, but we will rathe be fitting models. I suggest you read on some of the methods we discussed in class in the following books:
In the class lectures for this module, we have covered the following material:
Module 4
Simulations with Randomness, Cellular Automata and Agent-based models
Chapters 9-11, and the Guide to Python, Chapters 5-5.4, 6.
Mar 23: Lecture: Random numbers
Mar 28: Lecture: Cellular Automata and Agent-based models
Mar 30, Apr 4, 6: in-class projects
Apr 6: Quiz 4
Project report due: Apr 11
Additional notes for this Module:
  • Do exercises on this web page to get a better feel for random numbers. Were you successful in generating random numbers without the help of a coin?
  • Think about the following question: I generate digits between 0 and 9 at random, uniformly. I then write them down in a sequence, 6 such random numbers at a time. Are the resulting 6-digit numbers distributed uniformly between 0 and 999,999? Now take a bunch of physical constants, like speed of light, Planck constant, Boltzmann constant, etc. Calculate the frequency of occurrence of digits 0...9 in the numerical values of these constants in the SI units. Are you surprised by the frequency distribution? Can you explain what you see?
Module 5
High performance computing
Chapters 12, 10.2, and the Guide to Python: No new reading
Apr 11: Lecture: HPC
Apr 13: Tutorial: HPC, in-class projects
Apr 18, 20, 25: in-class projects
Apr 25: Quiz 5
Project report due: Apr 27 (note the day)
Apr 29, 8:00 am -- Final Exam