Skip to content

uw-ne/ep476

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

EP476 - Introduction to Scientific Computing for Engineering Physics

Welcome to EP476, "Scientific Computing for Engineering Physics". This course will focus on bringing important scientific software development skills to students primarily in the Engineering Physics department.

Location: 2324 Engineering Hall
Class times: TR 1:00-2:15 PM
Office Hours: W 4-5:30 PM
Instructor: Prof. Paul Wilson
Office: 443 Engineering Research Building
Email: paul.wilson _at_ wisc.edu
Phone: 608-263-0807
Slack: uw-ne.slack.com

Table of Contents

Description

Scientific software development has transitioned from a field devoted almost entirely to numerical methods to one that increasingly relies on more advanced management of data and development of analysis workflows that involve multiple tools strung together in a sequence, and also numerical methods.

This course is designed to introduce a variety of concepts that will make engineers and scientists more effective at developing software that facilitates modern engineering analysis.

Textbook

"Effective Computation in Physics", Anthony Scopatz & Kathryn Huff, O'Reilly, 2015

Assessment

Homework: 60%

  • approximately weekly
  • continuation of in-class exercises
  • develop skills and proficiency

Project: 40%

  • implement your own software
  • should use a variety of skills learned in class

Topics

  • Command-line environment in Unix/Linux
  • Version control with git
  • Healthy software development communities
  • Programming for human efficiency and maintainability
    • Programming style: write code for people
    • Programming modularity: don't repeat yourself
  • Unit testing for robustness
  • Continuous integration
  • Understanding your tools
    • Working with compiled languages: Using a compiler
    • Fixing mistakes: Using a debugger
    • Testing performance: Using a profiler
  • Build & Installation Management
  • Software Design
    • Separation of concerns
    • Introduction to object-oriented design
  • Scientific Computing
    • Numerical Methods
    • Visualization

Syllabus

Week 1 (Jan 23 & 25): Intro, Shell, Filesystem

Week 2 (Jan 30 & Feb 1): Filesystem, Environment & Shell Programming

Week 3 (Feb 6 & Feb 8): Version Control with git - Local and Remote

  • Lecture #5: Introduction to version control with git
  • Lecture #6: Branching and working with remote repositories

Week 4 (Feb 13 & Feb 15):

  • Lecture #7: Managing collaborative contributions and conflicts
  • Lecture #8: Project scoping and design

Week 5 (Feb 20 & Feb 22):

  • Lecture #9: Introduction to Python and best practices
  • Lecture #10: Containers for effective data structures

Week 6 (Feb 27 & Mar 1):

Week 7 (Mar 6 & Mar 8):

  • Lecture #13: Group work to develop project ideas into plans
  • Lecture #14: Finite difference equations & project management with Github

Week 8 (Mar 13 & Mar 15):

  • Lecture #15
  • Lecture #16 (Wilson traveling): Introduction to SciPy and Linear Algebra Review

Week 9 (Mar 20 & Mar 22):

  • Lecture #17: Demonstration of Software Planning & Diagramming
  • Lecture #18: Project Work Day

Spring Break - No Class

Week 10 (Apr 3 & Apr 5):

  • Lecture #19: (Wilson traveling) - Project Work Day
  • Lecture #20: (Wilson traveling/ANS Student Conference): Work on Homework #3

Week 11 (Apr 10 & Apr 12):

  • Lecture #21: Managing input: command-line, python-as-input, YAML as a sample standard format
  • Lecture #22: Working with files, debugging, and output formats

Week 12 (Apr 17 & Apr 19):

  • Lecture #23:
  • Lecture #24 (Wilson traveling): Project Work Day

Week 13 (Apr 24 & Apr 26):

  • Lecture #25: HDF5, Dictionaries of functions, matplotlib
  • Lecture #26: 3D plotting, testing and continuous integratino

Week 14 (May 1 & May 3):

  • Lecture #27
  • Lecture #28 - Final Project Presentatinos

Homework Assignments

Project Assignments

Teaching and Learning Philosophy

Successful learners take ownership of their own learning and seek guidance from the instructor to guide their learning process. The instructor's role is to chart a course through the material that will expose students to the concepts they need with appropriate examples. The student's role is to pursue the course set the instrutor with a curious thirst for the nuances and details of the concepts they experience along the way.

Code of Conduct

Please treat this classroom like a modern professional work environment:

  • All communication should be appropriate for a professional audience including people of many different backgrounds. Sexual language and imagery is not appropriate for any event.

  • Be kind to others. Do not insult or put down other students.

  • Behave professionally. Remember that harassment and sexist, racist, or exclusionary jokes are not appropriate.

  • Harassment includes offensive verbal comments related to gender, sexual orientation, disability, physical appearance, body size, race, religion, sexual images in public spaces, deliberate intimidation, stalking, following, harassing photography or recording, sustained disruption of talks or other events, inappropriate physical contact, and unwelcome sexual attention.

  • Diversity is a source of strength, creativity, and innovation. All students in this course are expected to value the contributions of each person and respect the ways in which their identity, culture, background, experience, status, abilities, and opinion enrich our learning experience and university community.

  • Disrespectful behavior or comments directed toward any group or individual will be addressed by the instructor.

  • Academic Integrity is critical to the mission of the University of Wisconsin-Madison, a research institution with high academic standards and rigor. All members of the University community play a role in fostering an environment in which student learning is achieved in a fair, just, and honest way.

Additional Resources

  • The Greater University Tutoring Service (GUTS) is a Registered Student Organization (RSO) supported by segregated fees and dedicated to connecting UW students with volunteer tutors for assistance with academic courses, study skills, conversational English, and intercultural exchange. We provide free tutoring and mentoring to hundreds of students and university affiliates each semester!

  • Tutoring-by-Request (TBR) is a privately funded program that allows authorized students to obtain one-on-one help from tutors for a number of different courses. Typically TBR provides tutors for over 60 courses engineering students commonly take.

  • Becoming a member of the UW Student Section of the American Nuclear Society is a great way to start your participation in a professional organization related to your field, offering social and professional opportunities throughout the year. It can also be an important place to find academic help from peers or older students.

  • UHS mental health providers understand the complexities of student life and offer an open, safe, and confidential environment to help students through issues that may interfere with their well-being, academic productivity, and happiness.