An Introduction to Modern Computational Physics

Fluid Dynamics

Welcome! Computation is powerful. In this course, you are going to learn how to use computation to do amazing simulations: compute how general relativity changes the orbit of Mercury; simulate turbulence; compute the effect of predator and preys on an ecosystem; run a quantum algorithm; and more! We've searched and distilled from the world some of the coolest physics we know for you to learn to simulate. Our primary goal in this class will be to help you make these simulations.

Course Logistics

Online Tools - Useful Links

See useful links for more information about how to use these tools


Date Assignment
August 27 N Ways to Measure PI
September 3 Dynamics
September 10 Orbital Dynamics
September 17 Mercury Perihellion
September 24 Exoplanets
October 1 Chaos
October 8 Predator-Prey
October 15 Fluid Dynamics
October 22 Random Walks
October 29 Markov Chains
November 5 Machine Learning Galaxies
November 12 Particle Physics
November 19 Quantum Computing I
December 3 Quantum Computing II



Computational Assignments

The heart of this course will be a series of computational assignments.

Daily Attendance Question

During class (while I assign students to break-out rooms), there will be a ten-minute attendance question posted and to be submitted on campuswire. If you've worked through the previous assignment, this question will be fairly simple (asking about how to write something basic in python, etc.). You will get 1/2 a point for submitting your answer and 1/2 a point for getting it right. These points over the semester will make up 10% of your grade. Collaboration is not allowed on the attendance question but use of other resources are (but shouldn't be needed - if you find otherwise you should talk to us).

Take-Home Final

There will be a take-home final that is 15% of your grade. Collaboration is not allowed on the take-home final but other resources are. The take-home final will involve programming in the same spirit as the assignments.

Extra Credit

There will be occassional opportunities to get extra credit. To zeroth order these exist because I think they are cool and useful for understanding computational physics but I can't justify within the 2 credit hours of the course.

Extra credit assignments will often be described poorly (maybe even something like, `get a full solar system simulation working'). If you have questions about it, please ask before you spend too much time on it. Also, we have no obligation to make extra credit typo-free. Please try to answer the question we mean to be asking.

For the extra credit, per exercise, the grading is all or nothing. We aren't going to hunt for typos and give partial credit for sortof working code. The amount of extra credit per exercise/etc is listed on the assignment.


Your final numerical score is computed as 100 x (0.75 x (Homework Points + Extra Credit Ponts)/(Total Homework Points) + 0.1 x (Attendance Question) + 0.15 x Final

The final breakdown of how your grade depends on your numerical score goes as:

Scores are inclusive of the bottom number - i.e. a 90 gets an A not an A-. All problem sets count for the same amount. Unless otherwise noted, every exercise in a problem set counts an equal fraction of the assignment and every part (a,b,c,...) of an exercise counts as an equal fraction of the exercise. 5 points of the problem set will be for mandatory questions (e.g. time spent on assignment, references, collaborators).

Sometimes there are typos in the assignment (although we are working hard to remove them). Please ask when confused! Don't spin your wheels a long time on something that might be a typo. These aren't trick questions - we are trying to ask reasonable things.


About using code you find on the web

The quickest way to deal with the arcana of programing is to ask Google for examples of what you are seeking to accomplish. But you will need to use your judgment in doing this: the Google search "how do I use color maps in python?" is fine, while "show me a script that calculates pi" is not. And you should always credit the original source of code that you paste into your own programs in a comment that includes the URL for the original code. If an author says that his/her code is not to be copied or incorporated into your programs, then DON'T.

I have two principal goals in this course. I want all of you to become fearless coders with the confidence to walk up to baffling problems and pound them into submission. And I want you to develop numerical descriptions of cool systems normally thought to be too difficult for students at your level, whose analytic descriptions might obscure the underlying physics. For this to work, you’ll need to write your own code.

Academic Integrity

You must never submit the work of someone else as your own. We understand that many of you will find it helpful to work with other students to master Physics 246. But when you collaborate with your study group on homework assignments, you must be a full, active participant in developing the solutions that you submit for credit.

It is cheating to receive answers from another student and then use them as your own. It is cheating to submit as your own work solutions that you find by searching on the worldwide web (though see "About using code you find on the web"), or by subscribing to an online service that suborns cheating. It is cheating "and a violation of U.S. copyright law" to give (or sell) course material to someone else who intends to redistribute and/or sell it.

Cheating will be penalized harshly: I will award zero credit for any assignment in which a student is found to have cheated. I will also probably reduce your course grade by two letter grades (so that an A becomes a C), though I reserve the right to issue an F for the entire course to any student who is found to have cheated.

All activities in this course, are subject to the Academic Integrity rules as described in Article 1, Part 4, Academic Integrity, of the Student Code.


Why this course?

As the needs of our students evolve “there is, for example, increasing focus on early readiness for research” the Physics faculty are obliged to adjust both what we teach, and how we teach.

There is a rich tradition of innovation in engineering pedagogy at Illinois. Fifty years ago UIUC became the first school to teach its undergraduates to design computers. More recently, our colleagues have become national leaders in successful efforts to improve instructional outcomes in elementary physics. We intend to continue this Illinois tradition by incorporating computational literacy into the set of core competencies to be mastered by our students.

Just as we require physics majors to enroll in courses taught by Mathematics, but teach the applications of mathematics to physics in our own courses, we hope to do the same with programming. We will continue to require that our students take an introductory course in Computer Science, while incorporating into our own courses machine-based approaches to problems that cannot be solved analytically. Examples include chaos and nonlinear phenomena; fluid dynamics; real-world electrodynamics; quantum mechanics of multi-electron atoms.

This course is a first step. From it, we expect that students will come away with a better grasp of complex phenomena and will be prepared to engage with research experiences that would otherwise have been inaccessible. This will bring to the department's scientific efforts the collateral benefit of an enlarged pool of competent research assistants. If we are successful, our methods should generalize to other disciplines in science and engineering.

Background: The technical foundation for physics majors includes material in physics, mathematics, computer science, and chemistry. But though the courses taught outside the Physics Department provide an excellent introduction to important subjects, they are insufficiently dense in application to specific physics topics to stand on their own. We find this to be especially true in mathematics and computer science. Consequently, the Physics Department offers undergraduate and graduate courses on mathematical methods for physics, as well as a graduate course in computation.

Recently we have now added two new undergraduate courses in computational physics: this course and 498CMP. By simulating physical systems and observing their (simulated) behaviors, students can more efficiently grasp concepts that might be otherwise obscured by mathematical equations. By developing their computational skills, students are better prepared to assist in data acquisition and analysis tasks in a research setting. In addition, about half of our graduating majors choose employment over graduate study; they often report that prospective employers are seeking to hire employees with computational skills.

Owls? 246?
The previous course, Physics 298OWL, for obscure reasons requires us to append a three-letter code to the course number. Since the owl is the symbol of Athena “goddess of wisdom, inspiration, mathematics, strength, and other goods thing”, "OWL" seemed like a sensible choice.
This course has since evolved into Physics 246. And why 246? Because that's the vacuum expectation value of the Higgs field.